float型資料在計算機中如何儲存?

2021-10-07 00:07:49 字數 999 閱讀 5792

科學記數法/1612882?fr=aladdin

(浮點數的移位儲存)

c語言和c#語言中,float(單精度浮點型別)資料占用32bit,遵從ieee r32.24規範,具體分為3個部分:

1bit符號位(sign): 0 表示正數, 1 表示負數。

8bit指數字(exponent): 用於儲存二進位制科學記數法中的指數資料,範圍是-127~128,並且採用移位儲存。

23bit尾數部分(mantissa):科學記數法中的小數部分。由於整數字可預設表示,實際表達的精度為24bit。

第2點中的移位儲存的含義是:直接用二進位制0000 0000 ~ 1111 1111表示-127~128,即設科學記數法中的指數值為x,指數字的值實際儲存為 (127+x),對應關係示例如下:

0000 0000,表示-127;

倒推過程:1000 0001+0111 1111=(1)0000 0000,其中1000 0001為8位有符號數,表示-127。

0111 1111,表示0;

1000 0000,表示1;

1111 1111表示128.

倒推過程:1000 0000+0111 1111=1111 1111,有符號數的8bit的表示範圍是-128~127,不能表達128。

綜合上述結果的猜測:c語言float型別資料8bit指數字的表示中,可能在正整數時採用了無符號8bit資料型別,負整數時採用了有符號8bit資料型別。

二進位制數1.111 011 1 * 26在記憶體中的表示為:

1bit 符號位的值為0

8bit指數字的值為(127+6)=133,即1000 0101‬

23bit尾數部分的值為1110 1110 0000 0000 0000 000

(0) (1000 0101) (1110 1110 0000 0000 0000 000)

即0100 0010 1111 0111 0000 0000 0000 0000

該32bit數對應的十六進製制表示為:0x 42 f7 00 00

float型別在計算機中的儲存方式

float型別數字在計算機中用4個位元組儲存。遵循ieee 754格式標準 乙個浮點數有2部分組成 底數m和指數e 底數部分 使用二進位制數來表示此浮點數的實際值 指數部分 占用8bit的二進位制數,可表示數值範圍為0 255 但是指數可正可負,所以,ieee規定,此處算出的次方必須減去127才是真...

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

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

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

為什麼要使用2的補碼 two s complement 形式儲存負數?反碼舉例來說 8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?可以將乙個二進位制最高位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是0...