带符号数的移位

带符号数的移位操作

    算术移位时应保持数的符号位不变,而数值的大小则要发生变化。左移一位相当于该数乘以2,而右移一位相当于该数除以2

1、原码的移位规则

    不论正数还是负数,在左移或右移时,符号位均不变,空出位一律以0补入。
    负数的原码移位前后结果为:

  •     左移:移位前有     1 1 X 1 X_1 X 2 X_2 ··· X n 1 X_{n-1} X n X_n
              移位后有     1 1 X 2 X_2 X 3 X_3 ··· X n X_n    0 0
  •     右移:移位前有     1 1 X 1 X_1 X 2 X_2 ··· X n 1 X_{n-1} X n X_n
              移位后有     1 1 0 0 X 1 X_1 ··· X n 2 X_{n-2} X n 1 X_{n-1}

2、补码的移位规则

    (1)正数
     符号位不变,不论左移还是右移,空出位一律以0补入。
    (2)负数
     符号位不变,左移后的空出位补0,右移后的空出位补1

  •      左移:移位前有    1 1 X 1 X_1 X 2 X_2 ··· X n 1 X_{n-1} X n X_n
               移位后有    1 1 X 2 X_2 X 3 X_3 ··· X n X_{n}     0 0
  •      右移:移位前有    1 1 X 1 X_1 X 2 X_2 ··· X n 1 X_{n-1} X n X_n
               移位后有    1 1 1 1 X 1 X_1 ··· X n 2 X_{n-2} X n 1 X_{n-1}

猜你喜欢

转载自blog.csdn.net/Mr_HCW/article/details/84262060