數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式

32位系統(tǒng)中char,int型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式

  • 計(jì)算機(jī)中存儲(chǔ)整型類數(shù)據(jù)采用的是補(bǔ)碼。
  • 正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼=反碼+1 。
  • 反碼:符號(hào)位不動(dòng),數(shù)值位按位取反。
  • 符號(hào)位:1表示負(fù)數(shù),0表示正數(shù)
  • char也是一種整型類型,占1byte(8bit)它存儲(chǔ)的是字符的ascii值,有符號(hào)字符類型[signed] char的數(shù)據(jù)表示范圍為 -128(1000 0000) ~ 127,無(wú)符號(hào)字符類型unsigned char 的數(shù)據(jù)表示范圍為 0 ~ 255。
    char
  • int 型占4byte(32bit),有符號(hào)[signed] int 數(shù)據(jù)范圍為 -32768 ~32767,無(wú)符號(hào)unsigned int 數(shù)據(jù)范圍為 0 ~ 65535
    int

浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式

  • float型實(shí)數(shù)在內(nèi)存中占4個(gè)字節(jié)(32 bit),從低位到高位依次叫第0位到第31位。這32位可以分為3個(gè)部分:符號(hào)位(第31位),階碼(第30位到第23位共8位),尾數(shù)(最低23位)。
    1、符號(hào)位:0表示正數(shù),1表示負(fù)數(shù)。
    2、階碼:表示該實(shí)數(shù)轉(zhuǎn)化為規(guī)格化的二進(jìn)制實(shí)數(shù)后的指數(shù)與127(127即所謂偏移量)之和, 規(guī)格化的二進(jìn)制實(shí)數(shù)的指數(shù)只能在-127~ +127之間,所以,一個(gè)float型數(shù)的最大值在+2127即+3.4*1038,最小值在-2127即-3.4*1038。
    3、尾數(shù):表示該實(shí)數(shù)轉(zhuǎn)化為規(guī)格化的二進(jìn)制實(shí)數(shù)后小數(shù)點(diǎn)以后的其余各位。
    float
  • double型與float型存儲(chǔ)方式相同,只是所占的位數(shù)不同


    double

例如,將十進(jìn)制178.125表示成機(jī)器內(nèi)的32個(gè)字節(jié)的二進(jìn)制形式.

  1. 將128.125表示成二進(jìn)制數(shù):(178.125)(十進(jìn)制數(shù))=(10110010.001)(二進(jìn)制形式);
  2. 將二進(jìn)制形式的浮點(diǎn)實(shí)數(shù)轉(zhuǎn)化為規(guī)格化的形式:(小數(shù)點(diǎn)向左移動(dòng)7個(gè)二進(jìn)制位可以得到) 10110010.001=1.0110010001*2^7
  3. 符號(hào)位:該數(shù)為正數(shù),故第31位為0,占一個(gè)二進(jìn)制位.
    階碼:指數(shù)為7,故其階碼為127+7=134=(10000110)(二進(jìn)制),占從第30到第23共8個(gè)二進(jìn)制位.
    尾數(shù): 為小數(shù)點(diǎn)后的部分, 即0110010001.因?yàn)槲矓?shù)共23個(gè)二進(jìn)制位,在后面補(bǔ)13個(gè)0,即01100100010000000000000
  4. 178.125在內(nèi)存中的實(shí)際表示方式為:
    0 10000110 01100100010000000000000

將-0.15625表示成機(jī)器內(nèi)的32個(gè)字節(jié)的形式.

  1. 將-0.15625表示成二進(jìn)制形式: (-0.15625)(十進(jìn)制數(shù))=(-0.00101)(二進(jìn)制形式);
  2. 將二進(jìn)制形式的浮點(diǎn)數(shù)轉(zhuǎn)化為規(guī)格化的形式:(小數(shù)點(diǎn)向右移動(dòng)3個(gè)二進(jìn)制位可以得到) -0.00101=-1.01*2^(-3)
  3. 符號(hào)位:該數(shù)為負(fù)數(shù),故第31位為1,占一個(gè)二進(jìn)制位;
    階碼:指數(shù)為-3,故其階碼為127+(-3)=124=01111100,占從第30到第23共8個(gè)二進(jìn)制位;
    尾數(shù): 小數(shù)點(diǎn)后的01,當(dāng)然后面要補(bǔ)21個(gè)0;
  4. 0.15625在內(nèi)存中的實(shí)際表示形式為:
    1 01111100 01000000000000000000000
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容