2)"按位或"运算经常用与将某些二进制位置1 例12.4将一个字节的高4位置为1010并输出结果 分析:直接用位运算符,可以很方便的置1、清0、翻转等,但 无法直接实现置给定的值。可以用两步实现:首先将高4位 清0,然后与10100000或。程序如下 设a为待处理的数据,转换成二进制为00001000, b用来保存将a的高4位清0后的结果 main f unsigned char a,b,c, a=8 b-a&0x0fcb0xa20:c用于保存最终结果/ printi( ox,0); 运行结果:10101000
2)"按位或"运算经常用与将某些二进制位置 1。 例12.4:将一个字节的高4位置为1010并输出结果。 分析:直接用位运算符,可以很方便的置1、清0、翻转等,但 无法直接实现置给定的值。可以用两步实现:首先将高4位 清 0,然后与1010 0000相或。程序如下: /*设 a 为待处理的数据,转换成二进制为00001000, b用来保存将a的高4位清0后的结果*/ main() { unsigned char a,b,c; a=8; b=a&0x0f; c=b|0xa0; /*c用于保存最终结果*/ printf("%x",c); } 运行结果:10101000
3)按位异或运算经常用与将某些位翻转 例12.5编程实现将一整数n的高8位翻转,低8位不变 分析:用“异或”运算实现,即高8位与1相异或,低8位与0 相异或,也就是k与十六进制的f00相异或。程序如下 main( {intn=129; printf(\n before reset, n=%ox,n); n=nAOxff00 printf(\n after reset, n=%ox,n); }运行结果: before reset,n=0000000010000001 after reset.n=1111llll 10000001 结论:任何二进制位与0异或,保持不变;与1异或,对应位 翻转
3)按位异或运算经常用与将某些位翻转。 例12.5 编程实现,将一整数n的高8位翻转,低8位不变 分析:用“异或”运算实现,即高8位与1相异或,低8位与0 相异或,也就是k与十六进制的ff00相异或。程序如下: main() { int n=129; printf("\n before reset,n=%x",n); n=n∧0xff00; printf("\n after reset,n=%x",n); } 运行结果: before reset,n=00000000 10000001 after reset,n=11111111 10000001 结论:任何二进制位与0异或,保持不变;与1异或,对应位 翻转