15.3 移位运算
1.移位运算符
移位运算是对操作数以二进制位为单位进行左移或右移。
移位操作
运算符 名 称 例 子 运算功能
>> 右移位 b>>3 b右移3位
<< 左移位 c<<2 c左移2位
2.左移运算
左移运算符“<<”是双目运算符,其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如;
a<<4
就把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
3.右移运算
右移运算符“>>”是双目运算符,其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:
a=15,a>>2
表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0;而为负数时,符号位为1,最高位是补0或1取决于编译系统的规定。Turbo C 规定补1。
右移运算相当于将运算对象除2.
15.4 位赋值运算
位赋值运算符。
位赋值运算符
运算符 名 称 例 子 等价于
&= 位与赋值 a&=b a=2&b
︳= 位或赋值 a|=b a=a|b
∧= 位异或赋值 a∧=b a=a∧b
>>= 右移赋值 a>>b a=a>>b
<<= 左移赋值 a<<=b a=a<
位赋值运算的过程为:
(1)先对两个操作数进行位操作;
(2)然后把结果赋予第一个操作数,因此第一个操作数必须是变量。
位赋值运算与算术赋值运算相似,它们都统称复合赋值运算。