c语言的操作符之按位操作符
2017-11-05 21:13
197 查看
c语言的操作符之按位操作符:
& 按位与对某些位清0或保留某些位
| 按位或
^ 按位异或
用来使某些特定位的翻转
eg:10010001的第2,3位翻转
就是将10010001^00000110=10010001^6
实现两个数的交换(不创建临时变量)
>>右移
eg:a>>b表示把a转为二进制后右移b位(去掉末b位),相当于a除以2的b次方(取整).
实际应用:如二分查找、堆的插入操作。
最大公约数的二进制算法用除以2操作来代替慢得出奇的mod运算,效率可以提高60%
<<左移
eg:a<<b表示
把a转为二进制后左移b位(在后面添b个0) ,实际上就是a乘以2的b次方.(程序中乘以2的操作请尽量用左移一位来代替)
实用:
设一个数为n,则:
( 结合左移右移操作符)
n&1:结果就是取二进制的最末位。(取某位值)
n | 1:结果就是把二进制位强行变成1。(置某位为1)
n ^1 : 结果就是将二进制末位强制取反。(某位取反)
注: (n^x)^x=n:可用于简单的加密 。(^运算的逆运算是它本身)
相关文章推荐
- c语言操作符---位操作符、移位操作符
- C语言之sizeof操作符
- C语言操作符的介绍及总结
- C语言操作符小结
- 2.1 C语言之位操作符
- C语言:数据类型、存储区字节数、占位符、sizeof、输入输出、二进制相关、操作符(++,--)、主函数参数
- C语言操作符++、--学习难点
- c语言操作符简介
- C语言操作符优先级
- 0602 c语言操作符和表达式
- 7_21|C语言|操作符注意事项|sizeof使用讲解|结构体简单介绍
- 【C语言复习(五)】由++,--操作符的使用简单认识C编译器的“贪心法”编译机制
- C语言操作符和表达式
- C语言中的操作符
- c语言中自增操作符与自减操作符
- C语言操作符总结
- C语言的移位操作符
- C语言安全编码之数值中的sizeof操作符
- c语言操作符优先级(转自博客园)
- [C语言基础]C语言操作符优先级