位运算符

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

以上内容均转自百度百科

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、位运算符C语言提供了六种位运算符:# & 按位与| 按位或^ 按位异或~ 取反<< 左移 >>右移 ...
    Fang_OSH阅读 7,775评论 0 0
  • 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均...
    暗物质阅读 7,160评论 0 1
  • 位操作是程序设计中对位模式按位或二进制数的一元和二元操作。位运算符中,除 ~ 以外,其余均为二元运算符。 有六种位...
    sun5kong阅读 3,704评论 0 0
  • 位运算符和位移运算符是底层运算符,处理组成整数的单个位。其实在 Java 程序里很少使用位运算符,除非处理底层操作...
    郭艺宾阅读 3,262评论 0 0
  • 位运算符 位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这...
    老九君阅读 6,001评论 0 0