原码,反码,补码以及机器表示
这里给出的只是这些知识点的一个总结,更为细致的解释在各位前辈的博客中都有详细的讲解。
原码:
原码是人们能够想到的数字在机器中最直观的表示。最高位为符号位,符号位为0表示正数,符号位为1表示负数。以八位为例(当然现在大部分机器int型都是32位),“3”的原码就是“0000 0011”,而“-3”的原码是“1000 0011”。
反码:
正数的反码是其本身,负数的反码事实上就是它的符号位不变,其他部分全部取反(0变为1,1变为0)。感觉反码的用处不大,只是为计算后面的补码搭了一个中间的桥梁罢了。
补码:
正数的补码依旧是它本身。负数的补码是它的反码加1。事实上,负数补码的计方法是:符号位不变,用模数(如果是8位的话那就是1000 0000)减去该负数的数值部分。比如说对于-3,它的补码就是1000 0000 - 000 0011 = 111 1101,最后前面再加上符号位1,就得到了-3的补码1111 1101。这个结果其实就是-3的反码加1。
机器表示
一个数实际上在计算机中都是用补码表示的,在进行位运算的时候,不能想当然的以为是原码。