1
C/C ++程序设计
1.2.9.2 9.2 位运算应用

9.2 位运算应用

【例9.1】位运算的简单应用。

img338

运行结果如图9-1所示。

img339

图9-1

分析:

img340

计算过程:

img341

【例9.2】将无符号数a循环右移n位,即将a中原来左端(16-n)位右移n位,原来右端n位移到最左端n位。

img342

运行结果如图9-2所示。

img343

图9-2

分析:

输入的8进制数是1614,对应2进制数是0000 0011 1000 1100,右循环3位后的2进制数是:1000 0000 0111 0001,对应的8进制数是100161。

题目分三步进行:将a的右端n位先放到b中的高n位中,实现语句为b=a<<(16-n);将a右移n位,其左面高位n位补0,实现语句为c=a>>n;最后c与b进行按位或运算,即c=c|b。

img344