您好,登錄后才能下訂單哦!
小編給大家分享一下C語言中數據存儲方式知識點的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
C語言 數據存儲方式
一、源碼
一個數的原碼(原始的二進制碼)有如下特點:
最高位做為符號位,0表示正,為1表示負
其它數值部分就是數值本身絕對值的二進制數
負數的原碼是在其絕對值的基礎上,最高位變為1
下面數值以1字節的大小描述:
十進制數 | 原碼 |
+15 | 0000 1111 |
-15 | 1000 1111 |
+0 | 0000 0000 |
-0 | 1000 0000 |
注:原碼表示法簡單易懂,與帶符號數本身轉換方便,只要符號還原即可,但當兩個正數相減或不同符號數相加時,必須比較兩個數哪個絕對值大,才能決定誰減誰,才能確定結果是正還是負,所以原碼不便于加減運算。
二、反碼
對于正數,反碼與原碼相同
對于負數,符號位不變,其它部分取反(1變0,0變1)
十進制數 | 反碼 |
+15 | 0000 1111 |
-15 | 1111 0000 |
+0 | 0000 0000 |
-0 | 1111 1111 |
注:反碼運算也不方便,通常用來作為求補碼的中間過渡。
三、補碼
1、補碼說明
在計算機系統中,數值一律用補碼來存儲。
補碼特點:
對于正數,原碼、反碼、補碼相同
對于負數,其補碼為它的反碼加1
補碼符號位不動,其他位求反,最后整個數加1,得到原碼
十進制數 | 補碼 |
+15 | 0000 1111 |
-15 | 1111 0001 |
+0 | 0000 0000 |
-0 | 0000 0000 |
2、補碼的意義
在計算機系統中,數值一律用補碼來存儲,主要原因是:
統一了零的編碼
將符號位和其它位統一處理
將減法運算轉變為加法運算
兩個用補碼表示的數相加時,如果最高位(符號位)有進位,則進位被舍棄
示例:用8位二進制數分別表示+0和-0
十進制數 | 原碼 |
+0 | 0000 0000 |
-0 | 1000 0000 |
十進制數 | 反碼 |
+0 | 0000 0000 |
-0 | 1111 1111 |
說明:不管以原碼方式存儲,還是以反碼方式存儲,0也有兩種表示形式。但是如果以補碼方式存儲,補碼統一了零的編碼:
十進制數 | 補碼 |
+0 | 0000 0000 |
-0 | 10000 0000由于只用8位描述,最高位1丟棄,變為0000 0000 |
四、案例演示
模擬計算機運算
1) 76 - 32
計算機算法:76+(-32)
2) 76
源碼:0100 1100
反碼:0100 1100
補碼:0100 1100
3) -32
源碼:1010 0000
反碼:1101 1111
補碼:1110 0000
4) 相加
1110 0000
0100 1100
5) 驗算
結果:1 0010 1100
舍棄補碼:0010 1100
結果補碼:0010 1100
反碼:0010 1100
轉換源碼:0010 1100
注:由于舍棄補碼0為正數,則轉換源碼與補碼相同。
6) 結果:44
注意事項:
1、符號位 正數:0
2、符號位 負數:1
3、補碼計算結果,符號位超出大小限制則省略符號位
4、補碼結果:開頭數字是1時、根據負數規則轉為源碼、開頭0是為正數轉換
5、正數:源碼、反碼、補碼、相同
6、負數源碼轉反碼:符號不變,其他位0變為1、1變為0
7、負數反碼轉補碼:反碼的結果之上加1
8、加完或減完結果 不能大于或小于負的127
看完了這篇文章,相信你對“C語言中數據存儲方式知識點的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。