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