1.移位操作:把一个值的位左移或右移
左移:<< 右移:>>
逻辑移位:用0补齐
算术移位:左移时用0补齐,右移时整数用0补齐,负数用1补齐
1.左移:高位舍弃,低位补0
5 << 2
00000101 ---> 00010100 由5变为20
左移k位相当于扩大2^k倍
2.右移:
无符号位是逻辑移位,有符号位采用逻辑移位还是算术移位由编译器决定
右移相当于缩小2^k倍
说明:1.采用有符号位右移程序不可移植
2.移位负数位属于未定义行为,由编译器决定
如 a << -5
2.位操作符
& 与 | 或 ^亦或 ~非
1.把value中的n位(从右至左)上的值设为1
value = value | (1 << n);
2.把value中的n位(从右至左)上的值设为0
value = value & (~ (1 << n));
3.对指定位进行测试为1则返回非零值
value = value & (1 << n)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------学习记录,都是基本知识------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------