位运算符左移右移,位运算符的用法右移
Yyds干货库存
1.按位and () int a=3,b=-2,c=a b;
3 -2
结果:2
2.按位or ()int a=3,b=-2,
3-2
结果:-1
3.按位异或()int a=3,b=-2,c=a b;
3^-2
结果:-3
4.逐位求逆(~)int a=18,b=~ a;
~2
结果:-3
5.Move left():左移舍弃左边最高位,右边填0。
在数字不溢出的前提下,无论是正数还是负数,左移一位相当于乘以2的1次方,左移n位相当于乘以2的n次方。
32 3
结果:4用于将一个数的所有二进制位向左移位若干位。移动的位数由右操作数指定,它必须是非负的。右边的空位用0填充,如果高位向左移动,高位将被丢弃。
移动左表达式的位结果=表达式1表达式2
参数结果,任何变量。
表达式,任何表达式,要移位的数字。
表达式,任意表达式,移位数。
用于将一个数的所有二进制位向左移位若干位。例如:
将A的二进制数左移2位,右移0。如果a=15,即二进制数00001111,左移2位将得到0011100,即十进制数60(为简单起见,十进制数15用8位二进制数表示,如果用左移运算符16位二进制数表示,结果相同)。
将高位向左移动溢出,丢弃。
左移一位相当于数字乘以2,左移两位相当于数字乘以2 ^ 2=4。上面的例子15 ^ 2=60,也就是乘以4。但这个结论只适用于数左移时溢出丢弃的高位不含1的情况。
例如,假设一个整数存储在一个字节(8位)中。如果A是一个无符号整数变量,那么当a=64,也就是二进制数01000000时,溢出de左移一位就是0。但左移2位时,溢出高位包含1,不符合上述结论。
从下表可以看出,如果A的值是64,那么左移一位后相当于乘以2,左移两位后等于256。
简单介绍一种方便的计算方法:
8的值是8 * 2=16;
8的值是8 *(2 ^ 2)=32;
8的值是8 * (2 n)。
数学意义:
在数字不溢出的前提下,无论是正数还是负数,左移1位相当于乘以2的1次方,左移n位相当于乘以2的n次方。
6.右移():右移最高位为0,左侧填充0;最高的是1,左边填1。
右移1位相当于除以2,右移n位相当于除以2的n次方。
2 3
结果:16有两种右移:
1.逻辑右移:舍弃最低位,右移,左边空位加零。
2.算术右移:舍弃最低位,右移,在左侧空位补上原符号位(即补上最高位)。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。