C语言的位移运算符

来源:互联网 发布:ecs windows svn搭建 编辑:程序博客网 时间:2024/05/18 05:01
1:位与:&
只有两个操作数的对应位都为1结果才为1 (用真假描述,只有两个操作数都为真结果才为真)
用法:掩码
(10010011)&(00111101)= (00010001)


2:位或:|
其中任意操作数中对应的位为1,那么结果位就为1(如果任意一个操作数为真,或两个都为真,那么结果为真)
用法:打开位  fla |=1
(10010011)|(00111101)= (10111111)


3:位异或:^
操作数中的对应位有一个为1(但是不都为1),那么结果为1(如果两个操作数中有一个为真,但是不都是真,那么结果为真)
用法:转置位 既如果该位打开,则关闭该位;如果该位关闭,则打开该位;
(10010011)^(00111101)=(10101110) 


4:按位取反:~
将每个1变为0,将每个0变为1
用法:关闭位 fla &=~1
~(10011010)=(01100101)


5:左移:<<
操作数的每位向左移动,移动的位数由其右侧操作数指定,空出的位用0填充
用法  bu <<n ;bu 乘以2的n次幂
(10001010)<<2 =(00101000)


6:右移:>>
操作数的每位向右移动,移动的位数由其右侧操作数指定,丢弃移出左侧操作数右端的位
对于unsigned类型,使用0填充空出的位;对于有符号类型,结果依赖于机器
用法  bu >>2 ;如果bu为非负,则bu 除以2的n次幂
(10001010)>>2 =(00100010) // 无符号类型
0 0
原创粉丝点击