简单看看原码、补码和反码 (2)

简单看看原码、补码和反码

  

  这个时候会有一个问题,假如二进制补码是0100 0000,也就是64,向左移动一位,你觉得是多少?答案是-128,按理来说应该是正数的128啊,为什么是负的呢?记住,这个移位操作是会覆盖符号位的,往左移动一位的补码是1000 0000,注意,这里千万不要变成原码,在第一节中说过了补码为1000 0000的就是-128(这两个补码一定要注意点,很特殊,0000 0000代表十进制的0,1000 0000代表十进制的-128!千万不要变成原码比较,因为他们的原码都是0000 0000无法区分)

public void num() { byte a = 64; byte b = (byte) (a<<1); System.out.println(b);//-128 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzyjy.html