C語言 數(shù)據(jù)存儲方式知識點詳解
C語言 數(shù)據(jù)存儲方式
一、源碼
一個數(shù)的原碼(原始的二進(jìn)制碼)有如下特點:
- 最高位做為符號位,0表示正,為1表示負(fù)
- 其它數(shù)值部分就是數(shù)值本身絕對值的二進(jìn)制數(shù)
- 負(fù)數(shù)的原碼是在其絕對值的基礎(chǔ)上,最高位變?yōu)?
下面數(shù)值以1字節(jié)的大小描述:
十進(jìn)制數(shù) |
原碼 |
+15 |
0000 1111 |
-15 |
1000 1111 |
+0 |
0000 0000 |
-0 |
1000 0000 |
注:原碼表示法簡單易懂,與帶符號數(shù)本身轉(zhuǎn)換方便,只要符號還原即可,但當(dāng)兩個正數(shù)相減或不同符號數(shù)相加時,必須比較兩個數(shù)哪個絕對值大,才能決定誰減誰,才能確定結(jié)果是正還是負(fù),所以原碼不便于加減運算。
二、反碼
對于正數(shù),反碼與原碼相同
對于負(fù)數(shù),符號位不變,其它部分取反(1變0,0變1)
十進(jìn)制數(shù) |
反碼 |
+15 |
0000 1111 |
-15 |
1111 0000 |
+0 |
0000 0000 |
-0 |
1111 1111 |
注:反碼運算也不方便,通常用來作為求補碼的中間過渡。
三、補碼
1、補碼說明
在計算機(jī)系統(tǒng)中,數(shù)值一律用補碼來存儲。
補碼特點:
- 對于正數(shù),原碼、反碼、補碼相同
- 對于負(fù)數(shù),其補碼為它的反碼加1
- 補碼符號位不動,其他位求反,最后整個數(shù)加1,得到原碼
十進(jìn)制數(shù) |
補碼 |
+15 |
0000 1111 |
-15 |
1111 0001 |
+0 |
0000 0000 |
-0 |
0000 0000 |
2、補碼的意義
在計算機(jī)系統(tǒng)中,數(shù)值一律用補碼來存儲,主要原因是:
統(tǒng)一了零的編碼
將符號位和其它位統(tǒng)一處理
將減法運算轉(zhuǎn)變?yōu)榧臃ㄟ\算
兩個用補碼表示的數(shù)相加時,如果最高位(符號位)有進(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 |
說明:不管以原碼方式存儲,還是以反碼方式存儲,0也有兩種表示形式。但是如果以補碼方式存儲,補碼統(tǒng)一了零的編碼:
十進(jìn)制數(shù) |
補碼 |
+0 |
0000 0000 |
-0 |
10000 0000由于只用8位描述,最高位1丟棄,變?yōu)?000 0000 |
四、案例演示
模擬計算機(jī)運算
1) 76 - 32
計算機(jī)算法:76+(-32)
2) 76
源碼:0100 1100
反碼:0100 1100
補碼:0100 1100
3) -32
源碼:1010 0000
反碼:1101 1111
補碼:1110 0000
4) 相加
1110 0000
0100 1100
5) 驗算
結(jié)果:1 0010 1100
舍棄補碼:0010 1100
結(jié)果補碼:0010 1100
反碼:0010 1100
轉(zhuǎn)換源碼:0010 1100
注:由于舍棄補碼0為正數(shù),則轉(zhuǎn)換源碼與補碼相同。
6) 結(jié)果:44
注意事項:
1、符號位 正數(shù):0
2、符號位 負(fù)數(shù):1
3、補碼計算結(jié)果,符號位超出大小限制則省略符號位
4、補碼結(jié)果:開頭數(shù)字是1時、根據(jù)負(fù)數(shù)規(guī)則轉(zhuǎn)為源碼、開頭0是為正數(shù)轉(zhuǎn)換
5、正數(shù):源碼、反碼、補碼、相同
6、負(fù)數(shù)源碼轉(zhuǎn)反碼:符號不變,其他位0變?yōu)?、1變?yōu)?
7、負(fù)數(shù)反碼轉(zhuǎn)補碼:反碼的結(jié)果之上加1
8、加完或減完結(jié)果 不能大于或小于負(fù)的127
到此這篇關(guān)于C語言 數(shù)據(jù)存儲方式知識點詳解的文章就介紹到這了,更多相關(guān)C語言 數(shù)據(jù)存儲方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)
下面小編就為大家?guī)硪黄狢++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12C++ Custom Control控件向父窗體發(fā)送對應(yīng)的消息
這篇文章主要介紹了C++ Custom Control控件向父窗體發(fā)送對應(yīng)的消息的相關(guān)資料,需要的朋友可以參考下2015-06-06C++ 讀文件 將文件內(nèi)容讀入到字符串string中的方法
今天小編就為大家分享一篇C++ 讀文件 將文件內(nèi)容讀入到字符串string中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07C 創(chuàng)建鏈表并將信息存儲在二進(jìn)制文件中讀取的實例代碼
C 創(chuàng)建鏈表并將信息存儲在二進(jìn)制文件中讀取的實例代碼,需要的朋友可以參考一下2013-03-03