divyang4481 / mipt-hw

Automatically exported from code.google.com/p/mipt-hw
0 stars 0 forks source link

task18 Представление типа Double (Яковенко) #150

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
iakovenko_pavel/task18_double

Original issue reported on code.google.com by iakovenk...@gmail.com on 2 Dec 2012 at 9:01

GoogleCodeExporter commented 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

GoogleCodeExporter commented 9 years ago
Решение принято.

Минус 2 балла за сдачу не в срок.

Original comment by aivyu...@gmail.com on 22 Dec 2012 at 11:58