c语言中移位运算符,c语言移位运算符与运算用法

  以下所有运算符都是基于二进制的。

  移位运算符左移位运算符移位规则将整数的二进制补码向左移动。左边弃,右边填0;

  例如,使用:

  int a=5;

  int b=a 1;10的二进制补数是00000000000000000000000将10的二进制补码左移一位,右端没有零。0的左端被丢弃,因为它超过了32位。

  在第二行中,因为整个二进制序列左移一位,所以b的值变为10:

  难点和小知识点1。那么,为什么A的值没有变呢?看这个语句,很明显可以得到答案:shift运算符不是赋值运算符,它不能给变量赋值。变量本身的值在没有赋值的情况下是不变的。使用移位运算符类似于使用算术运算符。

  int x=y ^ 2;2.左移运算符具有乘以2的效果,例如代码:

  int a=5;

  int b=a 1;//也就是b=a * 2^1

  int x=12

  int y=x ^ 3;//即y=x * 2 3右移运算符移位规则右移运算有两种:

  逻辑移位的左边用0填充,丢弃算术移位的右边用原值的符号位填充,丢弃的右边用算术右移,比如:

  int num=-1 1;-1的补码是:

  向右逻辑移位,例如:

  int num=-1 1;-1的补码是:

  位运算符逐位和两个形补码,对应的二进制位都是1,那么1,如果对应的二进制位数不一样,那么bit 0。比如:

  根据2位的补码,对应的二进制位有一位是1,就是1。如果所有对应的二进制数都是0,就是0。比如:

  根据按位异或两个形补码,相同时对应的二进制位为0,不同时为1,如:

  总结一下按位异或的小规则:

  int a=5;

  1 . ^ a=0;

  2.0 ^ a=a;建议根据XOR的规则验证小规则,以熟悉XOR运算符。

你可能感兴趣的