首页 理论教育 C语言程序设计教程:位运算符的作用

C语言程序设计教程:位运算符的作用

时间:2023-10-27 理论教育 版权反馈
【摘要】:例7-8计算i,j的输出值。图7-12程序运行结果2.左移运算运算符“<<”是双目运算符。

C语言程序设计教程:位运算符的作用

1.按位取反运算

运算符“~”是单目运算符,运算对象位于运算符的右边,其功能是把运算对象的内容按位取反,即使0变成1;使1变成0。

例7-8 计算i,j的输出值。

本例中,7的进制形式为111,3的二进制形式为011,所以“7^3”的二进制形式为111^011=100,而100转换为十进制数为4;4的二进制形式为100,3的二进制形式为011,所以“~4&3”的二进制形式为~100&011=011&011=011,而011转换为十进制数为3。故本例的输出结果为:i=4, j=3

程序的运行结果如图7-12所示。

图7-12 程序运行结果

2.左移运算

运算符“<<”是双目运算符。其左边是移动对象,右边是整型表达式代表左移的位数。左移时,右端低位补0,左端高位移出的部分舍弃。

例如:计算k的输出值。

本例中,变量j的初始值为2,所以“j<<2”表示j的二进制值左移两位,即扩大4倍,所以变量j的值变为8,然后与i的值1进行异或运算的结果为9。故本例的输出结果为:k=9

3.右移运算

运算符“>>”是双目运算符。其左边是移动对象,右边是整型表达式代表右移的位数。右移时,右端低位移出的部分舍弃,左端高位移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。

例如:计算k的输出值。

本例中“>>”的优先级高于“^”。先计算j>>2得二进制数001;由于i=2 换算成二进制数为010,所以再计算010 ^001 ,得二进制数为011,即十进制数为3。(www.xing528.com)

4.按位与运算

按位与“&”运算的作用是将参加运算的两个数中相对应的二进制位上,分别进行“与”运算。当两个相应的位都为1时,该位的结果为1,否则为0。

例如:计算k的输出结果。

因为i=7换算成二进制数为111,j=5换算成二进制数为101,所以i和j的与运算结果为二进制数101,即十进制数5。

5.按位异或运算

按位异或“^”运算的作用是将参加运算的两个数中相对应的二进制位上,若数相同,则该位的结果为0;若数不同,则该位的结果为1。

例如:计算k的值并输出。

本例中,变量i=2,换算成二进制数为010,变量j=3,换算成二进制数为011,两数的异或运算结果为二进制数001。故本例的输出结果为:k=1。

6.按位或运算

按位或“|”运算的作用是将参加运算的两个数中相对应的二进制位上,若数同为0,则该位的结果为0;否则为1。

例如:在按位异或运算的例子中,将“k=i^j;”改为“k=i|j;”,则输出结果为:k=3。

7.位数不同的运算数之间的运算规则

(1)先将两个运算数右端对齐。

(2)再将位数短的一个运算数往高位扩充(无符号数和正整数左侧用0补全,负数最左侧用1补全),然后对应数相等的两个运算数按位进行运算。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈