12.112.1位运算位运算CC语言具有位逻辑运算和移位运算语言具有位逻辑运算和移位运算的独特功能,参与位运算的运算量必须是的独特功能,参与位运算的运算量必须是整数。位逻辑运算包括整数。位逻辑运算包括&&、、||、∧、~四、∧、~四种运算,移位运算有种运算,移位运算有<<<<、、>>>>两种运算。两种运算。其中~位单目运算符。其中~位单目运算符。12.1.1按位与按位与12.1.2按位或按位或12.1.3按位异或按位异或12.1.4按位取反按位取反12.1.5按位左移按位左移12.1.6按位右移按位右移12.1.7位运算的复合位运算的复合赋值运算符赋值运算符12.1.112.1.1按位与按位与参与运算的量,如果参与运算的量,如果相对应的两位相对应的两位都为都为11,则,则该位该位的结果值为的结果值为11,否则为,否则为00,即:,即:0&0==00&1==01&0==01&1==10&0==00&1==01&0==01&1==1如:如:aa的值为的值为0x12340x1234,,bb的值为的值为0x000x00,,a&ba&b运算的结果运算的结果cc应应为:为:a0001001000110100a0001001000110100&b0000000011111111&b0000000011111111c0000000000110100c0000000000110100按位与按位与常用于将某个运算量的常用于将某个运算量的某些位清某些位清00或提取某些位的或提取某些位的值值,如本例中,将变量的高,如本例中,将变量的高88位清位清00,同时保留或提取低,同时保留或提取低88位位的值,可用一个高的值,可用一个高88位为位为00,低,低88位为位为11的值的值0x00ff0x00ff和它进行和它进行按位与。按位与。12.1.212.1.2按位或按位或参与运算的量,如果参与运算的量,如果相对应的两位相对应的两位都为都为00,,则则该位该位的结果值为的结果值为00,否则为,否则为11,即:,即:0|0==00|1==11|0==11|1==10|0==00|1==11|0==11|1==1如:如:aa的值为的值为0x12340x1234,,bb的值为的值为0x000x00,,a|ba|b运算的结果运算的结果cc应为:应为:aa00010010001101000001001000110100|b|b00000000111111110000000011111111cc00010010111111110001001011111111按位或按位或常用于将某个运算量的常用于将某个运算量的某些位置某些位置11,如本例中将,如本例中将变量的低变量的低88位置位置11,高,高88位不变,可用一个高位不变,可用一个高88位为位为00,低,低88位为位为11的值的值0x00ff0x00ff和它进行按位或。和它进行按位或。12.1.312.1.3按位异或按位异或参与运算的量,如果参与运算的量,如果相对应的两位相对应的两位相异,则相异,则该该位位的结果为的结果为11,否则为,否则为00,即:,即:00==001==110==111==0∧∧∧∧00==001==110==111==0∧∧∧∧如:如:aa的值为的值为0x12340x1234,,bb的值为的值为0x000x00,,aa∧∧bb运算的结果运算的结果cc应应为:为:aa00010010001101000001001000110100∧∧bb00000000111111110000000011111111cc00010010110010110001001011001011按位异或按位异或有“与有“与11异或”该位翻转,“与异或”该位翻转,“与00异或”该位不异或”该位不变的规律。如本例中用变的规律。如本例中用0x00ff0x00ff进行按位异或,使变量进行按位异或,使变量aa的低的低88位翻转,高位翻转,高88位不变。位不变。12.1.412.1.4按位取反按位取反将参与运算量的相对应位的值取反,即将参与运算量的相对应位的值取反,即11变变00,,00变变11。。如:如:aa的值为的值为0x12340x1234,,~~aa运算的结果运算的结果cc应为应为::~~aa00010010001101000001001000110100cc1110110111001011111011011100101112.1.512.1.5按位左移按位左移按位左移是将一个运算量的各位依次左移若干位,按位左移是将一个运算量的各位依次左移若干位,低位补低位补00,高位舍弃不要。,高位舍弃不要。假设机器字长为假设机器字长为88位,变量位,变量aa的值为的值为1616,将,将aa左移二位,左移二位,即即a=a<<2a=a<<2:左移前:左移前0001000000010000左移后左移后0100000001000000由此看出,左移一位相当于该数乘由此看出,左移一位相当于该数乘22,左移二位相当于乘,...