位运算符

2020-2-10 17:37

位操作是程序设计钟对位模式安危或二进制数的一元和二元操作

关于单目,双目,三目运算符的区别

单目运算符是指运算所需变量为一个的运算符,即在运算中只有一个操作数,又叫一元运算符

双目运算符就是只有两个操作数

三目运算符有三个操作数,目前只有一个条件运算符?,比如a?b;c,当a的值为真时结果是b,否则结果是c。

因为在现代架构中,位运算的运算速度通常与加法运算相同,但是仍然快于乘法,所以可以用来进行优化2的n次幂


C语言中一共有六种位运算符

  1. &按位与
  2. |按位或
  3. ^按位异或
  4. ~取反
  5. <<左移
  6. >>右移

按位与运算   &

按位与运算符&是双目运算符,其功能是参与运算的两数各对应的二进位相与,只有对应两个二进位均为1时,结果位才为1,否则位0.参与运算的数以补码的方式出现

9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

c=a&b;

按位或运算   |

按位或运算符|是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现

9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。 按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为11111111)

a|255;

按位异或运算   ^

按位异或运算符^是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
参与运算数仍以补码出现。

9^5
 00001001
 ^
 00000101
=00001100

求反运算   ~

求反运算符为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。

~9
~(1001)
  0110

左移运算   <<

左移运算符<<是双目运算符。左移n位就是乘以2的n次方。 其功能把<<左边的运算数的各二进位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补0

右移运算   >>

右移运算符>>是双目运算符。右移n位就是除以2的n次方

其功能是把>>左边的运算数的各二进位全部右移若干位,>>右边的数指定移动的位数。

x>>1;//相当于x/=2
x<<1;//相当于x*=2
x>>2;//x/=4
x<<2;//x*=4
x>>3;//x/=8
x<<3;//x*=8

以上内容均转自百度百科

你可能感兴趣的:(位运算符)