计算机中存储的都是二进制,最高位表示符号位,0为正数,1为负数。在计算机中其实没有原码反码,存储的二进制全都是补码。而存储为补码的原因就是为了简便计算(可以把减法变为加法来计算)。原码和反码是我们在求补码时的抽象。
正数的原码,反码,补码都是原码本身,三者的结果是一样的;
负数的反码是在原码的基础上,符号位不变,其余的按位取反;补码是反码+1。
所以我们使用java输出一个负数的二进制时,其实是这个数的补码,不是原码。比如-10:
-10的原码是:1000 0000 0000 0000 0000 0000 0000 1010
使用java将-10转为二进制打出来其实是-10的补码:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190225141618529.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ3NjA1Mw==,size_16,color_FFFFFF,t_70)
关于左移<<,右移>>,无符号右移>>>运算符:
左移:将一个整数转换成二进制,将二进制的每一位各左移动。规律:假设移动n位,变量是x,公式:x<<n=x*2^n;
右移:>>(有符号),当数值为负数时,在右移时的第一位符号位不参与移动。
规律:假设移动n位,变量是x。
如果是正数,公式:x>>n
计算机中的二进制
最新推荐文章于 2022-07-26 10:16:15 发布