第10章位运算 12.1位运算符和位运算 按位与的用途 ☆清零 使一个存储单元清零,即使其全部二进制位为0。 ■找一个二进制数,符合以下条件:原来的数中为1的位相应 位为0。 ■然后使二者进行&运算即可。 例:原有数为00101011,另找一个数,设它为1001 0100,将这两个数进行&运算 00101011 &10010100 00000000
-6- 第10章 位运算 12.1 位运算符和位运算 按位与的用途 v 清零 使一个存储单元清零,即使其全部二进制位为0。 找一个二进制数,符合以下条件:原来的数中为1的位相应 位为0。 然后使二者进行&运算即可。 例: 原有数为00101011,另找一个数,设它为1001 0100,将这两个数进行&运算: 00101011 & 10010100 00000000
第10章位运算 12.1位运算符和位运算 ☆取一个数中某些指定位 如有一个整数a(2个字节),想要取其中的低字节,只需将 a与255(8个1)按位与即可。 a匚0010110010101100 0000000011111111 0000000010101100 ◇保留一位 与一个数进行&运算,此数在该位取1 例如:有一数01010100,想把其中左面第3、4、5、7、 8位保留下来,运算如下: 01010100(84) &00111011(59) 即:a=84,b=59 00010000(16) c=a&b=16
-7- 第10章 位运算 12.1 位运算符和位运算 v 取一个数中某些指定位 如有一个整数a(2个字节),想要取其中的低字节,只需将 a与255(8个1)按位与即可。 v 保留一位 与一个数进行&运算,此数在该位取1。 例如:有一数01010100,想把其中左面第3、4、5、7、 8位保留下来,运算如下: a 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 b c 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 即:a=84,b=59 c=a&b=16 01010100(84) & 00111011(59) 00010000(16)
第10章位运算 12.1位运算符和位运算 "按位或″运算符(|) ◇"按位或″运算规则 两个相应的二进制位中只要有一个为1,该位的结果值为1。 即00=0,01=1,1|0=1,1|1=1 例:060017,将八进制数60与八进制数17进行按位或运算。 00110000 l0001111 00111111 ◆应用 ■按位或运算常用来对一个数据的某些位置值为 例如:如果想使一个数a的低4位改为1,只需将a与01 7进行按位或运算即可。 例:a是一个整数(16位),有表达式: a0377或a|0xff 则低8位全置为1,高8位保留原样
-8- 第10章 位运算 12.1 位运算符和位运算 "按位或"运算符(|) v "按位或"运算规则 两个相应的二进制位中只要有一个为1,该位的结果值为1。 即 0|0=0,0|1=1,1|0=1,1|1=1 例: 060|017,将八进制数60与八进制数17进行按位或运算。 v 应用 按位或运算常用来对一个数据的某些位置值为1。 例如:如果想使一个数a的低4位改为1,只需将a与01 7进行按位或运算即可。 例:a是一个整数(16位),有表达式: a | 0377 或 a | 0xff 则低8位全置为1,高8位保留原样。 00110000 | 00001111 00111111
第10章位运算 12.1位运算符和位运算 ■"异或″运算符(∧) 异或″运算符运算规则 建霸播青介梨管:驾则羞乘嘉算留腰在 相 加:0∧0=0,0∧1=1,1∧0=1,1∧1=0。例: 00111001 ∧00101010 00010011 即:071∧052=023(八进制数) ◆∧运算符应用 ■使特定位翻转 设有01111010,想使 其低4位翻转,即1变为0 01111010 0变为1。可以将它与000 ∧00001111 01111进行∧运算,即: 01110101 要使哪几位翻转就将与其进行∧运算的该几位置为1即可
-9- 第10章 位运算 12.1 位运算符和位运算 "异或"运算符(∧) v "异或"运算符运算规则 异或运算符∧也称XOR运算符。它的规则是:若参加运算的两个二 进制位同号则结果为0(假),异号则结果为1(真)即按位相 加: 0∧0=0, 0∧1=1, 1∧0=1, 1∧1=0。例: 即:071∧052=023 (八进制数) v ∧运算符应用 使特定位翻转 设有01111010,想使 其低4位翻转,即1变为0, 0变为1。可以将它与000 01111进行∧运算,即: 要使哪几位翻转就将与其进行∧运算的该几位置为1即可。 00111001 ∧ 00101010 00010011 01111010 ∧ 00001111 01110101