位运算符左移右移,位运算符的用法右移

  位运算符左移右移,位运算符的用法右移

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: