Java 和 C 中的位运算符
来源:互联网 发布:新网域名过户方法 编辑:程序博客网 时间:2024/06/08 07:30
运算符
位运算符是用来对字节或字节中的位进行运算的符号,参加位运算的操作数必须是整型常量或变量。通常,我们把要进行位运算的变量说明为 unsigned 类型。C 语言提供了六种运算符。他们是位与(&)、位或(|)、位异(^)、左移(<<)、右移(>>)和取反(~)。这六种运算符的运算规则如下:
位与(&):
两个相应位上的值全 1,则改位的结果值为 1,否则为0。即:位或(|):
1&0为 0, 0&1 为 0,0&0为0, 1&1为1
两个相应位上的值全0,则该位的结果值为0,否则为1.即:位异(^):
1|0为1,0|1为1,0|0为0,1|1为1
两个相应位上的值相同,则该位的结果值为0,不相同为1.即:左移(<<):
1^1为0,0^0为0,1^0为1 0^1为1
是用来将左操作数的各个二进制位按右操作数给出的值向左移动。操作数移位后,右端出现的空位补零,而移出左端的高位被舍弃。例如:右移(>>),
设 a 的值为十进制数 15,即二进制 00001111,则 a << 2 后得 00111100,即十进制数字60。
是用来将左操作数的各个二进制数按右操作数给出的值向右移动。操作数移位后,左端出现的空位补零,而移出右端的低位被舍弃。例如:取反(~),
设b的值为十进制数字28,即二进制数 00011100,则 b >> 2后得 00000111,即十进制数字7。
是用来将操作数按位取反,即操作数的相应位上的值为1时变换成0,为0时变换成1,即 ~0 为1,~1为0。
通过上面的介绍,现对位运算符的运算规则做一小结。如下:
位与
两个相应位全 1 为 1,其余为 0
|
位或
两个相应位全 0 为 0,其余为 1^
位异或
两个相应位相同为 0,不相同为 1<<
左移
把左操作数左移指定的位数
>>
右移
把左操作数右移指定的位数~
取反
把操作数各位 0 变 1,1 变 0。
下面举一个位运算符的应用示例。
例题:
写一个程序,将整数 x 的低字节作为整数 z 的低字节,整数 y 的低字节作为整数 z 的高字节。
步骤:
a. 将整数 x 的低字节取出,高字节置零。即
x & 0x00ff
b. 将整数 y 的低字节移至高字节,低字节再置零。即
(y & 0x00ff)<<8
c. 将上面两者的结果进行合并。即
(x & 0x00ff) | (y & 0x00ff) <<8
程序如下:
main()运行结果如下:
{
unsigned x,y,z;
x=0x0531; y=0xabcd
z=(x & 0x00ff) | (y & 0x00ff) << 8;
printf("%x/n",z);
}
cd31
- Java 和 C 中的位运算符
- c和java中的位运算对比---补码运算
- java中的位运算符和运算符优先级
- C中的 "<<" 位运算符
- C语言中的逻辑运算符和位运算符总结
- C语言中的逻辑运算符和位运算符
- C语言中的逻辑运算符和位运算符总结
- Java 中的位运算符
- JAVA中的位运算符
- Java中的位运算符
- java中的位运算符
- java中的位运算符
- Java中的位运算符
- java中的位运算符
- Java中的位运算符
- java中的位运算符
- C语言中的位运算和逻辑运算
- C语言中的位运算和逻辑运算
- 冒泡法(Java语言)
- Spring的面向方面编程(Aop)
- 渐渐淡出的博客
- vc List控件保存socket
- How to call Postback from Javascript
- Java 和 C 中的位运算符
- Understanding the JavaScript __doPostBack Function
- 求最大公约数的算法
- 去掉了默认的输入法, 关于ctfmon.exe文件
- 监听器
- 金山词霸牛津版 下载地址链接
- 介绍STL中vector容器
- c# mssql事物开始,事物赋值,事物提交,事物回滚
- ASP.NET使用MessageBox方法