计算机中的补码和反码都是二进制吗,计算机中数值型数据二进制形式存储过程中的原码,反码与补码...
在計算機系統中,數值一律用補碼來表示和存儲。原因在于,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬件電路。
舉個例子快速掌握吧
給一個數求補碼
1、正整數的補碼是其二進制表示,與原碼相同
+9的補碼是00001001,二進制表示也是00001001,原碼:00001001
2、求負整數的補碼,將其對應的二進制表示除了符號位的所有位取反后加1
求-5的補碼。-5是負數,符號位是1,則對應-5的二進制表示也是原碼(10000101)符號位不變,其余位取反加1→(11111011)。所以-5的補碼是11111011。為,原碼(true form)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其余位表示數值的大小。則-5的原碼即是其二進制表示。+11的原碼為00001011,-11的原碼就是10001011
補碼求原碼
已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:
1如果補碼的符號位為“0”,其原碼就是補碼。
2如果補碼的符號位為“1”,符號位不變,其余位取反加1,那么求這個補碼的補碼就是要求的原碼。
e.g.已知一個補碼為11111001,則原碼是10000111(-7)。
因為符號位為“1”,表示是一個負數,所以該位不變,仍為“1”。
其余七位1111001取反后為0000110;(注:反碼的概念就是符號位不變,其余位取反就是反碼)
再加1,所以是10000111。
已知補碼求表示的數值
e.g.-65的補碼是10111111
若直接將10111111轉換成十進制,發現結果并不是-65,而是191。
事實上,在計算機內,如果是一個二進制數,其最左邊的位是1,則我們可以判定它為負數,并且是用補碼表示。
若要得到一個負二進制補碼的數值,只需求對應的二進制表示即可,即只需求原碼即可,只要對除符號位的其余位取反加1,就可算出其余位所表示的十進制數,將符號位變為負號-,加在這個十進制數前面即獲得此數。
如:二進制值:10111111(-65的補碼)
除符號位其余位取反:11000000
加1:11000001(-65)
+0與-0
首先正數的反碼補碼與原碼相同
+0的原碼:00000000
+0的反碼:00000000
+0的補碼:00000000
-0的原碼:10000000
-0的反碼:11111111(后面分析-0無反碼)
-0的補碼:00000000(補碼規定0沒有正負之分)
-128的原碼:10000000
-128的反碼:11111111
-128的補碼:10000000
-0與-128有相同的反碼,為減少歧義,-0沒有反碼。
綜上所述:1.-128的補碼和原碼一樣都是1000 0000,
2.0的原碼、反碼和補碼都一樣(即0000 0000)
3.如果把-0當做負數,1000 0000就會有歧義(事實上0的補碼只有一個0000 0000)
補碼的范圍是[-2^(n-1),2^(n-1)-1]
總結
以上是生活随笔為你收集整理的计算机中的补码和反码都是二进制吗,计算机中数值型数据二进制形式存储过程中的原码,反码与补码...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 27计算机表演赛命题,27届计算机表演赛
- 下一篇: 服务器发送消息技术,知识科普:IM聊天应