C语言中字符型在计算机中的存储
一. 字符型的分類和表示范圍
? ? ? ?char:是有符號還是無符號數(shù)視編譯器而定,一般為有符號數(shù),下文把它全部當(dāng)成有符號數(shù)進(jìn)行討論
? ? ? ? ? ? ? ? ? ?表示范圍:32位和64位機(jī)器上均是一個字節(jié),所以是八個bit位,最高位為符號位之后,后七位是數(shù)據(jù)位,所以它的取值范圍是-128---127(-2^7---2^7-1)
? ? ? ?signed char :有符號數(shù),和上面一樣
? ? ? ?unsigned char:無符號字符型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表示范圍:一個字節(jié),八個bit位全部是數(shù)據(jù)位,所以取值范圍是0---255(0---2^8-1)
二. 計算機(jī)對字符型數(shù)據(jù)的存儲和讀取
? ? ? 字符型在計算機(jī)中是按照整型的規(guī)則進(jìn)行存儲的,如果是有符號類型,則最高位為符號位,0表示正,1表示負(fù),其余七位為數(shù)據(jù)位。如果是無符號數(shù),則八個位均為數(shù)據(jù)位。
? ? ? 這里我們討論有符號位中,0和-128的存儲規(guī)則。如果按照有符號數(shù)的存儲規(guī)則,我們知道0000 0000表示0,那么1000 0000表示負(fù)0,這顯然與我們的現(xiàn)實(shí)生活不符,而且也造成表示范圍的減小。那么1000 0000表示的是什么數(shù)字呢。這里規(guī)定,當(dāng)計算機(jī)用一各有符號數(shù)去讀取1000 0000時,會自動的在1的前面補(bǔ)1,這樣原來的8個bit位就變成了9個,其中補(bǔ)充的1作為符號位,又因?yàn)橛嬎銠C(jī)是以補(bǔ)碼的形式進(jìn)行存儲,這樣1 1000 0000(補(bǔ)碼)減1,變成了1 0111 1111(反碼),再符號位不變,其余位按位取反得到1 1000 0000(原碼),即得到了-128。
總結(jié)
以上是生活随笔為你收集整理的C语言中字符型在计算机中的存储的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kindle多少钱啊?
- 下一篇: 最近有啥好看的电视剧仙侠还没播出