有人知道为什么的吗?

img


有人知道详解吗?
有人知道详解吗?
有人知道详解吗?
有人知道详解吗?

  1. 右移操作是向值更小的方向舍入;算术运算是向绝对值更小的方向舍入。即 -5 / 4 = -1, -5 >> 2 = -2;5/4=1,5>>2=1.
  2. 原因:-5 在二进制码为1101,首位1表示负号-,101表示5;但是,为了方便计算机运算,-5是以补码形式存储,在这里就是1101除符号位取反得到1010,然后加1,得到1011;而运算符 >> 表示右移2位,1011 变为 1110(高位缺的补符号位,低位移走的扔掉);那么补码1110的值是多少?同上述过程,1110 -> 1001 -> 1010,即-2.故 -5 >> 2 = -2. 5>>2=1同理可得
  3. -5 / 4 = -1 ,5/4=1是算术运算规则
  4. 然后一个个数字尝试或者直接编程即可解决。
  5. 结果有13个:-8 -7 -6 -4 -3 0 1 2 3 4 5 6 8