小數在計算機中的表示

2021-08-10 09:37:55 字數 544 閱讀 9026

執行如下**得到結果

你猜是多少呢?

嗯你沒有看錯得到的答案是57.

所以為什麼會出現這種情況呢?首先需要**的是0.58這個數字是如何在計算機中儲存的。我們一般用下面格式表示浮點數。 sp

m 其中s是符號位,p是階碼,m是尾數。

單精度浮點數是32位,雙精度浮點數是64位。 s

pm表示公式

偏移量1823

(-1)s*2(p-127)*1.m

1271

1152

(-1)s*2(p-1023)*1.m

1023

。以雙精度浮點數為例,可以得到其二進位制表示格式如下。

s(第64位)

p(第52到63位)

m(第0到51位)

這個坑我覺得我要填不完了。。總而言之,0.58用二進位制來表示的話是無限長的值。引用一句話,

你看似有窮的小數, 在計算機的二進位制表示裡卻是無窮的。

這個坑填完了。知道了這個問題,那麼很容易就知道最後的結果為什麼是57了,0.57999999999*100那麼取整數就是57.

負數在計算機中的表示

今天,老大讓我調查乙個浮點數轉換為整數的問題。自己就查了些資料,順便複習一下原碼 反碼和補碼。原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組...

負數在計算機中的表示

原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組的5的反碼為 0000 0101 5的原碼為1111 1010。補碼 正數的補碼就是其原碼 負...

負數在計算機中如何表示?

負數在計算機中如何表示?舉例來說,8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?很容易想到,可以將乙個二進位制位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是00001000,而 8則是10001000...