第十二章位运算及其应用•一、位运算的分类:•位逻辑运算、位移运算两种•二、位逻辑运算[符]:•&|^~•【位逻辑运算的特点】•▲只作用于整型、字符型数据;•▲作用于整型、字符型数据的每个二进制位,不是数的整体•▲而一般逻辑运算是作用数的整体,不是数的每个二进制位
运算结果是二进制数
1、按位与运算符(&):1)运算规则:0&0=01&0=00&1=01&1=1▲只要对应位上的值均为1则该位上的结果值为12)特殊作用
①将一个存储单元各位清0②取某个数中的某些位
▲方法:将本数与某个特定数按位与运算即可
2、按位或运算符(|)1)运算规则:0|0=01|0=10|1=11|1=1▲只要对应位上的值其中一个为1则该位上的结果值为12)特殊作用
①常用于将一个数的某些特定位置为1▲方法:将本数与某个特定数按位或运算即可
3、按位异或运算符(^)1)运算规则:0^0=01^0=10^1=11^1=0▲只要对应位上的值互不相同则该位上的结果值为12)特殊作用[p300]
①使某些特定的翻转②任何数与0相异或结果保留原数本身③交换两个变量的值不用中间变量
a=a^bb=b^aa=a^b▲注意给变量赋值的先后顺序
4、按位异求反运算符(~)1)运算规则:~0=1~1=0▲对每个上的值按位求反:1变为0;0变为1
▲注意以上位逻辑运算的优先级别
▲注意:~运算符比算术运算、关系运算、逻辑运算和其它运算的优先级别都高
三、位移运算[符]:1、左位移运算符(n将a中所有位向右移动n位
2)运算的作用:相当于除法运算
右移一位相当于除以2
【注意】注意数的符号问题[即正负的问题]▲对于无符号数[正数]右移时高位补以0
▲对于有符号数,高位为0[正数]右移时高位补以0
▲对于有符号数,高位为1[负数]时:①右移时高位补以0,称之为“逻辑位移”
②右移时高位补以1,称之为“算术位移”
▲TC采用“算