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)制形式.
- 將128.125表示成二進(jìn)制數(shù):(178.125)(十進(jìn)制數(shù))=(10110010.001)(二進(jìn)制形式);
- 將二進(jìn)制形式的浮點(diǎn)實(shí)數(shù)轉(zhuǎn)化為規(guī)格化的形式:(小數(shù)點(diǎn)向左移動(dòng)7個(gè)二進(jìn)制位可以得到) 10110010.001=1.0110010001*2^7
- 符號(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- 178.125在內(nèi)存中的實(shí)際表示方式為:
0 10000110 01100100010000000000000
將-0.15625表示成機(jī)器內(nèi)的32個(gè)字節(jié)的形式.
- 將-0.15625表示成二進(jìn)制形式: (-0.15625)(十進(jìn)制數(shù))=(-0.00101)(二進(jìn)制形式);
- 將二進(jìn)制形式的浮點(diǎn)數(shù)轉(zhuǎn)化為規(guī)格化的形式:(小數(shù)點(diǎn)向右移動(dòng)3個(gè)二進(jìn)制位可以得到) -0.00101=-1.01*2^(-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;- 0.15625在內(nèi)存中的實(shí)際表示形式為:
1 01111100 01000000000000000000000