整數和小數在記憶體中二進位制表示

2021-08-06 04:32:21 字數 1838 閱讀 1855

以32位作業系統為例:(在實際計算機中數值的儲存都是按數值補碼儲存的,在此介紹過程中是以原碼介紹的

整數儲存:

無符號型別:所有bit都是有效資料位

以unsigned char為例,sizeof(unsigned char)等於1,也就是說unsigned char占用8bit,使用8個二進位制資料表示其數值。那麼unsigned char 的最大值就是1111 1111(全1)對應255,最小值就是0000 0000(全0)

有符號型別:最高1個bit位是符號位0代表正數,1表示負數,其餘bit位是有效資料位

以signed char為例,signed char依然占用8bit,但是最高位表示符號位占用1個bit,所以有效資料位就是剩餘7個bit。signed char的最大值是0111 1111(最高位0表示正數)對應127,最小值是1111 1111(最高為1表示負數)對應-127。(注意這是按原碼介紹的,實際過程應該是1000 0001)

小數儲存:

無論是單精度小數還是雙精度小數,在儲存中從高到低都分為三個部分。

(1)符號位           0代表正,1代表負

(2)指數字           用於儲存科學計數法中的指數資料,並且採用移位儲存(指數+127)

(3)尾數部分

float的符號位佔1位,指數字佔8位,尾數部分佔23位 // 總共32位,4位元組

double的符號位佔1位,指數字佔11位,尾數部分佔52位 // 總共64位,8位元組

1、173.8125f(f表示該值是float型別):

將十進位制小數173.8125f轉化為二進位制小數

即173.8125f的二進位制小數是

173.8125f的記憶體表示:符號位是0(正數),指數字127+7(10000110),尾數字010 1101 1101 0000 0000 0000。(

科學計數法中的1不在記憶體中儲存)

2、0.125f的記憶體儲存表示:二進位制小數0.001,科學計數法:1.0×10﹣³

符號位0,指數字1111 1100,尾數字001 0000 0000 0000 0000 0000

負數在記憶體中的儲存是其正數包括符號位全部取反再加1的結果:

以int 173(0000 0000 0000 0000 0000 0000 1010 1101)為例:

第一步包括符號位全部取反:1111 1111 1111 1111 1111 1111 0101 0010

第二步取反結果加1:1111 1111 1111 1111 1111 1111 0101 0011(-173)

現在再來看signed char的最小值-127的表示過程:

+127:0111 1111

全部取反:1000 0000

再加1:1000 0001

擴充套件:原碼:十進位制、八進位制、十六進製制轉二進位制加符號位的結果

反碼:除原碼的符號位,其餘取反的結果

補碼:反碼加1的結果。

注意:正數的原碼、反碼、補碼是一樣的。

以十進位制+111為例:+111的二進位制是0000 0000 0000 0000 0000 0000 0110 1111這是原碼也是反碼和補碼;

-111的原碼:1000 0000 0000 0000 0000 0000 0110 1111

-111的反碼:1111 1111 1111 1111 1111 1111 1001 0000

-111的補碼:1111 1111 1111 1111 1111 1111 1001 0001

小數的二進位制表示

兩種方法,注意邏輯細節!題目描述 有乙個介於0和1之間的實數,型別為double,返回它的二進位制表示。如果該數字無法精確地用32位以內的二進位制表示,返回 error 給定乙個double num,表示0到1的實數,請返回乙個string,代表該數的二進位制表示或者 error 測試樣例 返回 0...

整數的二進位制表示

目錄總結 整數的二進位制表示,需要區分正整數和負整數來看。看正整數的二進位制表示,就要先了解一下位權。十進位制 二進位制都有位權。以 123 為例 123 1 10 2 2 10 1 3 10 0。每個位置的位權都不一樣,十進位制從右到左,以 1 開始,依次乘 10 也就是說第 1 位為 1 第 2...

c 記憶體二進位制表示

int a 1 string b 1 1.其中變數a在記憶體中的二進位制是 0000 0001 2.那麼變數b是乙個字串,ascii碼是49 字串1的ascii碼是49 通過計算49轉換為二進位制是 0011 0001 所以變數b在記憶體中表示為 0011 0001 同理,string c 123 ...