负数的二进制
前面我们说了正整数的二进制运算规则,为什么不是整个整数范围的二进制运算呢?原来这个和计算机表示有关系,计算机无法读取负数,只能对应做加法,所以当一个负数转为二进制的时候,便有了新的表示法,我们称之为补码表示法
补码/反码/原码
首先我们要明白一点,二进制的首位用来表示正数还是负数,如果是0则是正数,1为负数,剩下的才是对应的值,但是需要注意的一点是,计算机的计算中负数也会转换为正数来计算,而转换的过程,则是先获取绝对值(正数)得二进制结果,此过程称之为原码,然后给当前的补码每一位反过来,则是最终负数的结果,此过程称之为反码,接着通过给当前反码+1的结果,称之为补码,****。当然由于数值类型不同,字节数不同,我们知道每一个字节占8个比特位,整数有四种类型,分别为byte、short、int、long,分别占1、2、4、8字节,即8、16、32、64个比特位,所以当位数不够的时候,高位会补0(从左到右则是高位到低位)。
例如当前值为-1,首先我们获取绝对值1,首先是一个字节的值,也就是8个比特位,1的二进制原码为1,前面补0,则是00000001,接着我们将当前值反过来,得到反码11111110,然后对反码+1则是补码11111111,所以-1得值就是11111111。
例如-127,绝对值为127,原码为01111111,反码为10000000,补码则是10000001,其他的负数都是如此。
位运算
前面介绍了整数的二进制操作,那么在计算机操作中,往往对二进制辅以位运算,以此来达到快速运算的结果,接下来,就开始学习计算机中的位运算操作,首先将所有的位运算列出来,如下:
运算符 | 说明 |
---|---|
<< | 左移位,在低位处补0 |
>></ |