位运算符介绍(一):C/C++位运算符
来源:互联网 发布:java提示找不到文件 编辑:程序博客网 时间:2024/06/06 05:10
位运算是指按二进制进行的运算。在程序中,常常需要处理二进制位的问题。C/C++语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。
在实际应用中,建议用unsigned整型操作数,因为带符号操作数可能因为不同机器结果不同。
c++和c的位操作运算符完全相同,但c++中增加了bitset标准库来支持位集操作,具体内容请参考http://book.51cto.com/art/200809/88698.htm或者http://book.csdn.net/bookfiles/17/1001760.shtml,这些链接都是《C++ Primer中文版》中的内容,大家也可以直接看书。
下面是C/C++位操作运算符列表,其中运算符优先级为从上到下递减,但<<,>>优先级相同。
代码示例如下:
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 unsigned short x=3,y=5; 5 cout<<"~x="<<(unsigned short)~x<<endl;//位求反 6 cout<<"~x="<<~x<<endl;//位求反 7 cout<<"x&y="<<(x&y)<<endl;//位与 8 cout<<"x^y="<<(x^y)<<endl;//位异或 9 cout<<"x|y="<<(x|y)<<endl;//位或10 cout<<"x<<1="<<(x<<1)<<endl;//位左移11 cout<<"y>>1="<<(y>>1)<<endl;//位右移12 return 0;13 }
运算结果如下:
~x=65532
~x=-4
x&y=1
x^y=6
x|y=7
x<<1=6
y>>1=2
代码解释如下:
short为16位整数,故x,y的二进制表示如下:
x=3(00000000 00000011)
y=5(00000000 00000101)
~ 00000000 00000011
= 11111111 11111100(65532或者-4)(至于为什么同样的二进制位表示的数不一样,这与计算机的数值表示有关,具体原因可搜索“补码”)
00000000 00000011
& 00000000 00000101
= 00000000 00000001(1)
00000000 00000011
^ 00000000 00000101
= 00000000 00000110(6)
00000000 00000011
| 00000000 00000101
= 00000000 00000111(7)
00000000 00000011<<1
= 00000000 00000110(6)
00000000 00000101>>1
= 00000000 00000010(2)
From: http://www.cnblogs.com/thujason/archive/2010/07/08/1773529.html
- 位运算符(一):C/C++位运算符
- 位运算符(一):C/C++位运算符
- 位运算符介绍(一):C/C++位运算符
- 位运算符介绍(一):C/C++位运算符
- 【C++】位运算符
- 【C++】位运算符
- C 位运算符
- C 【位运算符 & | ^ ~ << >>】
- Objective-C位运算符-Objective-C 位运算符
- C中的 "<<" 位运算符
- 位运算符C语言
- c语言位运算符
- 位运算符C语言
- Objective-C位运算符
- C语言位运算符
- c语言位运算符
- C语言位运算符
- 位运算符C语言
- linux虚拟内存空间布局
- 迷失
- ecshop商品第一页显示模糊缩略图解决方案
- 根据TR069数据模型xml文件生成用于XACS中可用于导入的脚本
- Dojo AMD加载器的高级使用教程 <2>
- 位运算符介绍(一):C/C++位运算符
- hibernate总结
- web工程加载到eclipse可能出现的错误
- SQL经典查询语句
- uva 568 Just the Facts
- linux命令解析--大文件跨网传输
- 位运算符介绍(二):Java位运算符
- [Cocos2D-X官方文档]:在不同平台上CocosDenshion所支持的音频格式
- STL vector 动态数组实现