对于数据是使用二进制数表示的,我觉得咱们应该是可以达成这个共识的。在这里,想说一下移位运算。移位运算指的就是,将二进制数值的各数位进行左右移位的运算。
咱们先来看看左移运算:
在十进制的基础上,我们知道,如果一个数向左移动两位,比如1向左移动两位变为100,扩大了10的2次方倍。那么同理,使用二进制来表示时,向左移动两位,那么应该扩大为原来的2的2次方倍。移位前是39,移位后为156,正好是4倍。反之,二进制数右移之后,则会变为原来的1/2,1/4,1/8…这也是为什么移位运算能够代替乘法运算和除法运算的原因。
介绍完之后左移,我们来看一下右移:
按照左移的规则,那么我们应该很容易就想到,所谓的右移就是这样:
有没有发现,为什么我右移两位之后,同样空出来的位用0补齐,它的数值大小不是原来的1/4呢?因为我们一般使用最高位来标识一个数的符号位,如果不加判断就使用0去补齐的话,那么就破坏了这种规则。这种右移方法在逻辑上是成立的,但是在算术上不成立,所以这种右移方法称为逻辑右移。接下来我们看看算术右移:
这样我们发现,使用这种方法右移之后,结果就是正确的了。关于数据是用二进制数来表示的相关内容就说到这里了。