看文章之前,两点提示:第一,不要管反码,以及反码和补码的关系 第二,忘掉符号位,没有符号位这个东西。
在计算机中:
正数的表示方式简单来讲就是原码
具体为二进制 比如7 0000--0111
负数的表示方式就是补码(补码的特征。第一位一定是1)
具体为该数的绝对值的按位取反然后加一 比如-7 第一步,把上面那个二进制数按位取反 1111--1000 第二步+1 1111--1001
那么 已知一个数的补码 怎么知道这个数的十进制数字呢? 首先看到补码那么他就毫无疑问是一个负数 那么同样将这个数全部按位取反然后加一 比如1101--0110 这是一个补码,因为首位是1。 第一步 :0010--1001 第二步:0010--1010 转换为十进制为42 然后补码都是负数 所以为 -42
那么为什么要使用补码来进行计算机的计算呢?
计算机里面大多数都是加法运算器,做的减法操作都是加上一个负数 比如 1-2=1+(-2)
那么这时,如果我们用原码操作0001
+1010
1011
答案是 -3?!
如果是补码呢 0001
+1110
1111
答案是-1
这其中的不同就是一个可以直接把符号位参与进入运算。