2.12.5 移位运算符(<<和>>)
左移和右移是把整数作为二进制位序列,求出把这个序列左移若干位或者右移若干位后得到的序列。它们的一般形式为:x<<n或x>>n(x是要被移位的量;n是要移动的位数)。
左移运算规则是将x 的二进制位全部向左移动n位,将左边移出的高位舍弃,右边空出的低位补0。右移运算是将x 的二进制位全部向右移动n 位,将右边移出的低位舍弃,左边高位空出要根据原来量符号位的情况进行补充。对无符号数则补0;对有符号数,若为正数则补0,若为负数则补1。
例如,设a=5,则:
(1)b = a<<3 即b = 0000,0101<<3 = 0010,1000 = 40。
(2)c = a>>2即c = 0000,0101>>2 = 0000,0001 = 1。
另外,左移运算等效于将整数值乘以2的幂;右移运算等效于将整数值除以2 的幂,幂的大小即为左移或右移的位数。