Отправляет email-рассылки с помощью сервиса Sendsay

Assembler с нуля и единицы...

  Все выпуски  

Assembler с нуля и единицы... №5 Десятичные дроби


Ассемблер
с нуля и единицы
0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1
<<<
Introduction...
>>>
       Здравствуй всем читателям, сегодня выходит 5-й выпуск рассылки. Это самый маленький юбилей, который может быть. И вот после небольшого дневного сна, я все-таки решился его написать. С каждым разом выпуски рассылки будут становиться все интересней и сложнее, так что впереди ещё самый интересный и в то же время весьма сложный материал. А сегодня мы продолжим знакомиться с двоичной системой...

Искренне, Ваш RAITN!

<<<
The decision of examples
>>>
       Как и обещал, привожу решение примеров. Насколько помню, нам нужно было перевести 4-ре числа из десятичной системы счисления в двоичную...

      Перевод числа 33 в двоичную систему счисления:
33 : 2 = 16(1 в остатке)
16 : 2 = 8  (0 в остатке)
8 : 2 = 4    (0 в остатке)
4 : 2 = 2    (0 в остатке)
2 : 2 = 1    (0 в остатке)
1 : 2 = 0    (1 в остатке)
Ответ: 33d -> 100001b

      Не забываем, что при получении результата остатки нужно писать в обратном порядке!

      Перевод числа 96 в двоичную систему счисления:
96 : 2 = 48(0 в остатке)
48 : 2 = 24(0 в остатке)
24 : 2 = 12(0 в остатке)
12 : 2 = 6  (0 в остатке)
6 : 2 = 3    (0 в остатке)
3 : 2 = 1    (1 в остатке)
1 : 2 = 0    (1 в остатке)
Ответ: 96d -> 1100000b

      Не забываем, что при получении результата остатки нужно писать в обратном порядке!

      Перевод числа 157 в двоичную систему счисления:
157 : 2 =78(1 в остатке)
78 : 2 = 39(0 в остатке)
39 : 2 = 19(1 в остатке)
19 : 2 = 9  (1 в остатке)
9 : 2 = 4    (1 в остатке)
4 : 2 = 2    (0 в остатке)
2 : 2 = 1    (0 в остатке)
1 : 2 = 0    (1 в остатке)
Ответ: 157d -> 10011101b

      Не забываем, что при получении результата остатки нужно писать в обратном порядке!

      Перевод числа 13789 в двоичную систему счисления:
13789 : 2 = 6894(1 в остатке)
6894 : 2 = 3447  (0 в остатке)
3447 : 2 = 1723  (1 в остатке)
1723 : 2 = 861    (1 в остатке)
861 : 2 = 430      (1 в остатке)
430 : 2 = 215      (0 в остатке)
215 : 2 = 107      (1 в остатке)
107 : 2 = 53        (1 в остатке)
53 : 2 = 26          (1 в остатке)
26 : 2 = 13          (0 в остатке)
13 : 2 = 6            (1 в остатке)
6 : 2 = 3              (0 в остатке)
3 : 2 = 1              (1 в остатке)
1 : 2 = 0              (1 в остатке)
Ответ: 13789d -> 11010111011101b

      Не забываем, что при получении результата остатки нужно писать в обратном порядке!

Вот мы и справились с этой несложной задачей...
      Хотелось бы рассказать, как проверять себя при переводе из одной системы счисления в другую...Воспользоваться можно элементарно Windows-калькулятором в инженерном виде (Вид - Инженерный). Там слева есть панелька, на которой расположены радиокнопки с названиями Hex , Dec , Oct , Bin . Это и есть выбор системы счисления. Теперь попробуйте набрать в режиме Dec число 13789 и затем нажать на радиокнопку Bin... Вуаля, вы увидели наш ответ...

Искренне, Ваш RAITN!

<<<
Decimal fractions in a binary notation
>>>
       Надеюсь, все знают, что такое десятичные дроби (вида 1.2; 0.4342; 98.9829 и тд.). Сейчас мы рассмотрим перевод правильных десятичных дробей в двоичную систему счисления. Для перевода вещественного десятичного числа в систему счисления с основанием q=2 необходимо данное число (только мантиссу) последовательно умножать на 2 до тех пор, пока в мантиссе не получится либо чистый нуль, либо нужное количество разрядов. Мантисса - дробная часть числа, это нужно просто запомнить. При последовательном умножении получаемые целые значения не учитываются, но они последовательно засчитываются в результат. Проследим все на конкретных примерах.

      Перевод числа 0.5 в двоичную систему счисления:
0.5 х 2 = 1 (0 в дробной части)
Ответ: 0.5d -> 0.1b

      Не забываем, что умножать нужно до "0" в дробной части

      Перевод числа 0.703125 в двоичную систему счисления:
0.703125 х 2 = 1 (406250 в дробной части)
0.406250 х 2 = 0 (812500 в дробной части)
0.812500 х 2 = 1 (625000 в дробной части)
0.625000 х 2 = 1 (250000 в дробной части)
0.250000 х 2 = 0 (500000 в дробной части)
0.500000 х 2 = 1 (000000 в дробной части)
Ответ: 0.703125d -> 0.101101b

      Не забываем, что умножать нужно до "0" в дробной части

Здесь нам повезло, потому что мы все-таки получили мантиссу равную "0". Теперь посмотрим пример с зацикливанием.

      Перевод числа 0.05 в двоичную систему счисления:
0.05 х 2 = 0 (10 в дробной части)
0.10 х 2 = 0 (20 в дробной части)
0.20 х 2 = 0 (40 в дробной части)
0.40 х 2 = 0 (80 в дробной части)
0.80 х 2 = 1 (60 в дробной части)
0.60 х 2 = 1 (20 в дробной части)
0.20 х 2 = 0 (40 в дробной части)
0.40 х 2 = 0 (80 в дробной части)
0.80 х 2 = 1 (60 в дробной части)
Ответ: 0.05d -> 0.000011(0011)b

      Не забываем, что умножать нужно до "0" в дробной части

      Мы зациклились. Получается двоичная переодическая дробь. Но даже в таком примере легко написать ответ, такое бывает очень редко. Важно понимать, что вещественные числа в общем случае невозможно точно представить в памяти ЭВМ. Точность представления зависит от формата числа и разрядности компьютера. Более подробно это будет рассматриваться позже.

       Теперь рассмотрим вариант перевода смешанных десятичных чисел (например, 112.44; 5.325 и тп.) в двоичную систему счисления (далее СС). Метод перевода таких чисел абсолютно прост. Нужно отдельно перевести целую и дробную части в двоичную СС, а потом их соединить. Например:

      Перевод числа 22.25 в двоичную систему счисления:

Целая часть:
22 : 2 = 11 (0 в остатке)
11 : 2 = 5   (1 в остатке)
5 : 2 = 2     (1 в остатке)
2 : 2 = 1     (0 в остатке)
1 : 2 = 0     (1 в остатке)
Целая часть = 10110

Дробная часть:
0.25 х 2 = 0 (50 в дробной части)
0.50 х 2 = 1 (00 в дробной части)
Дробная часть = 01

Ответ: 22.25d -> 10110.01b

      Не забываем, что умножать нужно до "0" в дробной части

      Сейчас как всегда домашнее задание:) Перевод чисел в двоичную СС: 0.15 , 0.85 , 112.35 , 14.60, 33.33 ...
Желаю удачи!

Искренне, Ваш RAITN!

<<<
...In summary
>>>
       На этом заканчивается материал 5-го выпуска рассылки. Двоичная система практически пройдена, остался такой ньюанс, как перевод из двоичной СС обратно в десятичную, и потом можно будет переходить к шестнадцатиричной СС. Теперь вы можете пообщаться со мной в асе. Буду рад встрече. Желаю всем удачи и успехов! Дерзайте...

Искренне, Ваш RAITN!

<<<
As with me to communicate
>>>
Емайл: assemblermain@mail.ru

ICQ: 472-513-080

Все авторские права на данный материал принадлежат автору рассылки и перепечатываются только с его согласия!
Copyright(C) 2007, RAITN.

Искренне, Ваш RAITN!


В избранное