二进制正负数的表示方式:原码,反码,补码
今天学习汇编语言标志寄存器那一节,关于正负,忽然发现这个当初学的已经忘记了,特地来记录复习一下。
原码:最普通的二进制数字
反码:对源码取反
补码:反码的基础上加上1
数据类型分为:有符号,无符号。
无符号类型全都是正号。
有符号类型存在正负,所以最高位就要拿出来,如果为0表示该数字为正,为1表示该数字为负。
负数应该如何表示呢?
负数的绝对值->源码->补码->反码->表示负数。
比如-1:
源码: 0000 0001
反码: 1111 1110
补码: 1111 1111
这个就表示-1,因为为有符号类型,那么最高位为1自然表示是负数。
要的到其值就“减一取反”即可。
就是这个样子,很简单!
为什么负数这么表示?
因为 你在进行正负计算时,可以直接相加对于负数运算,而不用再去转换成负数了!
比如
-1 1111 1111
1 0000 0001
直接相加后的结果
1 0000 0000
最高位溢出忽视,那么结果就是0,计算正确。
而你不用再把-1的补码还原成相关的值,这种操作是你要明确的。
这对计算机的运算大大的有利!!!!!!