[C]位操作符
来源:互联网 发布:行知实验幼儿园 编辑:程序博客网 时间:2024/05/01 19:44
位操作符使用整数作为操作数,位操作符将整数视为二进制位的集合,为每一位提供校验和设置的功能
在C中,我们通常会使用位操作符,如果使用的语言为C++,一般建议使用std::bitset
几种位操作符
<< 左移 -- 移动后,右边插入0以补充空位
>> 右移 --移动后,左边插入0以补充空位
& 与 --左右操作数,相同位都为1,操作结果该位才为1
| 或 --左右操作数,相同位有一个为1,操作结果就为1
~ 非 --只有一个操作数,对操作数每一位都取反
^ 异或 --左右操作数,对应的位不相同时,操作结果为1
比如 1000 >> 3 --> 1111101000 >> 3 --> 0001111101 --> 125
1000<<3 --> 1111101000 <<3 --> 1111101000000 --> 8000
100 & 10 --> 1100100 & 0001010--> --> 0000000 --> 0
~100 --> ~1100100 ?
--> No 这里要分场景,如果是在32位机器下100 --> 0000000000 0000000000 0000011001 00
--> ~100 --> 1111111111 1111111111 1111100110 11
100|10 --> 1100100 | 0001010 --> 1101110 --> 110
100^10 --> 1100100 | 0001010 --> 1101110 --> 110
//位操作符操纵的整数的类型可以是有符号的也可以是无符号的。如果操作数为负数,则位操作符如何处理其操作数的符号位依赖于机器
几个简单应用
1、指定位 置0
num & ~(1 << (pos -1) )
比如100 --> 1100100 --> 将第三位置0 --> 1100000 --> 96
pos = 3 --> pos -1 --> 2
1<<2 --> 100 --> ~100 --> 1111111..... 0 11 (第3位为0,其他全为1)
2、指定位置1
num | 1<<(pos-1)
3、取指定位的值
( num >>(pos -1) ) & 1
- c++(位操作符)
- [C]位操作符
- C语言位操作符
- c语言操作符---位操作符、移位操作符
- C/C++的位运算符操作
- C语言位操作符的使用
- C语言位操作符的使用
- C/C++ 位操作符使用
- C语言的位操作符
- C语言常用位操作符
- C语言位操作--逻辑运算符组合
- C 语言中的位操作符
- c语言的位操作符
- C++primer 5.3位操作符
- c-位运算操作符(异或)
- C语言之位操作符
- C语言位操作符的使用
- 17.C语言位操作符
- Rosmin与Rossum
- android error
- 两圆相交求面积
- QWT6.0.1+win7下安装说明
- Windows系统下使用Service Control管理服务
- [C]位操作符
- Xfce,KDE和Gome之间的自由切换。
- EL表达式
- poj_1811_Prime Test(大素数判断+质因子分解)
- 用C自己编写端口扫描软件
- IOS之Info.plist文件简介
- java 时间的操作
- HDU 1021/ZOJ 2060 Fibonacci Again(数论&整除推导&位运算技巧)
- Windows安装memcached