您好,登錄后才能下訂單哦!
這篇文章主要介紹“C語(yǔ)言中數(shù)據(jù)存儲(chǔ)方式是什么”,在日常操作中,相信很多人在C語(yǔ)言中數(shù)據(jù)存儲(chǔ)方式是什么問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C語(yǔ)言中數(shù)據(jù)存儲(chǔ)方式是什么”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
一、源碼
一個(gè)數(shù)的原碼(原始的二進(jìn)制碼)有如下特點(diǎn):
最高位做為符號(hào)位,0表示正,為1表示負(fù)
其它數(shù)值部分就是數(shù)值本身絕對(duì)值的二進(jìn)制數(shù)
負(fù)數(shù)的原碼是在其絕對(duì)值的基礎(chǔ)上,最高位變?yōu)?
下面數(shù)值以1字節(jié)的大小描述:
十進(jìn)制數(shù) | 原碼 |
+15 | 0000 1111 |
-15 | 1000 1111 |
+0 | 0000 0000 |
-0 | 1000 0000 |
注:原碼表示法簡(jiǎn)單易懂,與帶符號(hào)數(shù)本身轉(zhuǎn)換方便,只要符號(hào)還原即可,但當(dāng)兩個(gè)正數(shù)相減或不同符號(hào)數(shù)相加時(shí),必須比較兩個(gè)數(shù)哪個(gè)絕對(duì)值大,才能決定誰(shuí)減誰(shuí),才能確定結(jié)果是正還是負(fù),所以原碼不便于加減運(yùn)算。
二、反碼
對(duì)于正數(shù),反碼與原碼相同
對(duì)于負(fù)數(shù),符號(hào)位不變,其它部分取反(1變0,0變1)
十進(jìn)制數(shù) | 反碼 |
+15 | 0000 1111 |
-15 | 1111 0000 |
+0 | 0000 0000 |
-0 | 1111 1111 |
注:反碼運(yùn)算也不方便,通常用來(lái)作為求補(bǔ)碼的中間過(guò)渡。
三、補(bǔ)碼
1、補(bǔ)碼說(shuō)明
在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來(lái)存儲(chǔ)。
補(bǔ)碼特點(diǎn):
對(duì)于正數(shù),原碼、反碼、補(bǔ)碼相同
對(duì)于負(fù)數(shù),其補(bǔ)碼為它的反碼加1
補(bǔ)碼符號(hào)位不動(dòng),其他位求反,最后整個(gè)數(shù)加1,得到原碼
十進(jìn)制數(shù) | 補(bǔ)碼 |
+15 | 0000 1111 |
-15 | 1111 0001 |
+0 | 0000 0000 |
-0 | 0000 0000 |
2、補(bǔ)碼的意義
在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來(lái)存儲(chǔ),主要原因是:
統(tǒng)一了零的編碼
將符號(hào)位和其它位統(tǒng)一處理
將減法運(yùn)算轉(zhuǎn)變?yōu)榧臃ㄟ\(yùn)算
兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)有進(jìn)位,則進(jìn)位被舍棄
示例:用8位二進(jìn)制數(shù)分別表示+0和-0
十進(jìn)制數(shù) | 原碼 |
+0 | 0000 0000 |
-0 | 1000 0000 |
十進(jìn)制數(shù) | 反碼 |
+0 | 0000 0000 |
-0 | 1111 1111 |
說(shuō)明:不管以原碼方式存儲(chǔ),還是以反碼方式存儲(chǔ),0也有兩種表示形式。但是如果以補(bǔ)碼方式存儲(chǔ),補(bǔ)碼統(tǒng)一了零的編碼:
十進(jìn)制數(shù) | 補(bǔ)碼 |
+0 | 0000 0000 |
-0 | 10000 0000由于只用8位描述,最高位1丟棄,變?yōu)?000 0000 |
四、案例演示
模擬計(jì)算機(jī)運(yùn)算
1) 76 - 32
計(jì)算機(jī)算法:76+(-32)
2) 76
源碼:0100 1100
反碼:0100 1100
補(bǔ)碼:0100 1100
3) -32
源碼:1010 0000
反碼:1101 1111
補(bǔ)碼:1110 0000
4) 相加
1110 0000
0100 1100
5) 驗(yàn)算
結(jié)果:1 0010 1100
舍棄補(bǔ)碼:0010 1100
結(jié)果補(bǔ)碼:0010 1100
反碼:0010 1100
轉(zhuǎn)換源碼:0010 1100
注:由于舍棄補(bǔ)碼0為正數(shù),則轉(zhuǎn)換源碼與補(bǔ)碼相同。
6) 結(jié)果:44
注意事項(xiàng):
1、符號(hào)位 正數(shù):0
2、符號(hào)位 負(fù)數(shù):1
3、補(bǔ)碼計(jì)算結(jié)果,符號(hào)位超出大小限制則省略符號(hào)位
4、補(bǔ)碼結(jié)果:開頭數(shù)字是1時(shí)、根據(jù)負(fù)數(shù)規(guī)則轉(zhuǎn)為源碼、開頭0是為正數(shù)轉(zhuǎn)換
5、正數(shù):源碼、反碼、補(bǔ)碼、相同
6、負(fù)數(shù)源碼轉(zhuǎn)反碼:符號(hào)不變,其他位0變?yōu)?、1變?yōu)?
7、負(fù)數(shù)反碼轉(zhuǎn)補(bǔ)碼:反碼的結(jié)果之上加1
8、加完或減完結(jié)果 不能大于或小于負(fù)的127
到此,關(guān)于“C語(yǔ)言中數(shù)據(jù)存儲(chǔ)方式是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。