Closed GoogleCodeExporter closed 9 years ago
0 = 0 00000000000 0000000000000000000000000000000000000000000000000000
1 = 0 01111111111 0000000000000000000000000000000000000000000000000000
0.13 = 0 01111111100 0000101000111101011100001010001111010111000010100100
-0.13 = 1 01111111100 0000101000111101011100001010001111010111000010100100
10 = 0 10000000010 0100000000000000000000000000000000000000000000000000
1024 = 0 10000001001 0000000000000000000000000000000000000000000000000000
10675 = 0 10000001100 0100110110011000000000000000000000000000000000000000
-9876 = 1 10000001100 0011010010100000000000000000000000000000000000000000
Под тип double отводится 8 байт (64 бита).
Первый бит обозначает знак числа (1 - число
отрицательное, 0- число положительное).
Следующие 11 бит отводятся под "смещенный
порядок", то есть под степень числа. Степень
находится в диапазоне от 2^-1023 до 2^1023.
Поэтому 1 степень имеет вид 01111111111. То есть,
к нужной степени надо прибавить 1023 и
перевести это в двоичный код.
Последние 52 бита отводятся под мантиссу. То
есть, число переводится полностью в
двоичный код, а потом записывается в
мантиссу, причем первый ненулевой бит
опускается. Если конечное число не влезает
в 52 бита, оно округляется.
Original comment by iakovenk...@gmail.com
on 22 Dec 2012 at 10:11
Решение принято.
Минус 2 балла за сдачу не в срок.
Original comment by aivyu...@gmail.com
on 22 Dec 2012 at 11:58
Original issue reported on code.google.com by
iakovenk...@gmail.com
on 2 Dec 2012 at 9:01