32位系統(tǒng)中char,int型數(shù)據(jù)在內(nèi)存中的存儲方式
- 計(jì)算機(jī)中存儲整型類數(shù)據(jù)采用的是補(bǔ)碼侮攀。
- 正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼=反碼+1 。
- 反碼:符號位不動知牌,數(shù)值位按位取反。
- 符號位:1表示負(fù)數(shù)使兔,0表示正數(shù)
-
char也是一種整型類型默色,占1byte(8bit)它存儲的是字符的ascii值,有符號字符類型[signed] char的數(shù)據(jù)表示范圍為 -128(1000 0000) ~ 127壶笼,無符號字符類型unsigned char 的數(shù)據(jù)表示范圍為 0 ~ 255神僵。
-
int 型占4byte(32bit),有符號[signed] int 數(shù)據(jù)范圍為 -32768 ~32767覆劈,無符號unsigned int 數(shù)據(jù)范圍為 0 ~ 65535
浮點(diǎn)數(shù)在內(nèi)存中的存儲方式
- float型實(shí)數(shù)在內(nèi)存中占4個字節(jié)(32 bit)保礼,從低位到高位依次叫第0位到第31位沛励。這32位可以分為3個部分:符號位(第31位),階碼(第30位到第23位共8位)炮障,尾數(shù)(最低23位)目派。
1、符號位: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之間,所以,一個float型數(shù)的最大值在+2127即+3.4*1038,最小值在-2127即-3.4*1038练对。
3、尾數(shù):表示該實(shí)數(shù)轉(zhuǎn)化為規(guī)格化的二進(jìn)制實(shí)數(shù)后小數(shù)點(diǎn)以后的其余各位吹害。
-
double型與float型存儲方式相同螟凭,只是所占的位數(shù)不同
例如,將十進(jìn)制178.125表示成機(jī)器內(nèi)的32個字節(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)向左移動7個二進(jìn)制位可以得到) 10110010.001=1.0110010001*2^7
- 符號位:該數(shù)為正數(shù),故第31位為0,占一個二進(jìn)制位.
階碼:指數(shù)為7,故其階碼為127+7=134=(10000110)(二進(jìn)制),占從第30到第23共8個二進(jìn)制位.
尾數(shù): 為小數(shù)點(diǎn)后的部分, 即0110010001.因?yàn)槲矓?shù)共23個二進(jìn)制位,在后面補(bǔ)13個0,即01100100010000000000000- 178.125在內(nèi)存中的實(shí)際表示方式為:
0 10000110 01100100010000000000000
將-0.15625表示成機(jī)器內(nèi)的32個字節(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)向右移動3個二進(jìn)制位可以得到) -0.00101=-1.01*2^(-3)
- 符號位:該數(shù)為負(fù)數(shù),故第31位為1,占一個二進(jìn)制位;
階碼:指數(shù)為-3,故其階碼為127+(-3)=124=01111100,占從第30到第23共8個二進(jìn)制位;
尾數(shù): 小數(shù)點(diǎn)后的01,當(dāng)然后面要補(bǔ)21個0;- 0.15625在內(nèi)存中的實(shí)際表示形式為:
1 01111100 01000000000000000000000