资源描述:
《副件-第10章位运算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章位运算浙江工业大学主要内容二进制位位运算位运算应用举例10.1二进制位引入:C语言是为描述系统而设计的,因此它具有汇编语言所具有的一些功能。C语言既有高级语言的特点,又有低级语言的功能,因此具有广泛的用途和很强的生命力。概念:位运算是指对二进制位的运算。注意:C语言规定只能对整型数据作位运算原码、反码、补码规则:正整数的原码、反码、补码相同。负整数的反码为其原码除符号位外按位取反(即0改为1、1改为0),而其补码为其反码末位加1。例如:+7的原码、反码、补码均为:0000000000000111-7的原码为:1000000000000111-7的反码为:111
2、1111111111000-7的补码为:1111111111111001机内的二进制码注意:在计算机内部,有符号整数都用该数的二进制补码形式存储例如:-713-4311111111111110010000000000001101111111111101010110.2位运算C语言提供下列6种位运算符运算符含义&按位与
3、按位或^按位异或~取反<<左移>>右移注意:位运算符的操作数只能是整型数据,字符类型数据以其ASCII码作位运算10.2位运算⒈按位与运算符(&)格式:A&B结果:如果两个相应的位均为1则该位为1,否则为0例如:例10.1计算下列表达式结果,并解释计算过
4、程。①若有定义shorta,b,c;a=14;b=23;计算表达式c=a&b值;②若有定义shorta,b,ca=–12;b=6;计算表达式c=a&b值。若有定义shorta,b,c;a=14;b=23;计算表达式c=a&b值;(14的补码)0000000000001110&)(23的补码)0000000000010111(14&23的补码)0000000000000110十进制值为6若有定义shorta,b,ca=–12;b=6;计算表达式c=a&b值。(–12的补码)1111111111110100&)(6的补码)0000000000000110(–12&6的补码
5、)0000000000000100十进制值为4按位与运算的一些特殊用途使特定位清零如,要使整数n的低8位清零,而高8位不变,则可以用“n&0xff00”实现。取指定位的值。如,要使整数n的低8位读出,则可以用“n&0x00ff”实现。10.2位运算⒉按位或运算符(
6、)格式:A
7、B结果:如果两个相应的位均为0,则该位为0,否则为1。例如:例10.2计算下列表达式结果,并解释计算过程。①若有定义shorta,b,c;a=14;b=23;计算表达式c=a
8、b值;②若有定义shorta,b,ca=–12;b=6;计算表达式c=a
9、b值。①若有定义shorta,b,c;a=14
10、;b=23;计算表达式c=a
11、b值;(14的补码)0000000000001110
12、)(23的补码)0000000000010111(14
13、23的补码)0000000000011111十进制值为31②若有定义shorta,b,ca=–12;b=6;计算表达式c=a
14、b值。(–12的补码)1111111111110100
15、)(6的补码)0000000000000110(–12
16、6的补码)1111111111110110十进制值为–10按位或运算的用途功能:按位或运算,可以将一个数中的某些二进位设置为1。如,若n=0x74d2,补码为“0111010011010010”,
17、表达式“n=n
18、1”可以将n的机内码的最低位设置为1,n的值为“0111010011010011”,即为0x74d3。表达式“n=n
19、0x8000”使n的机内码的最高位设置为1,即将符号位设置为负号。10.2位运算符⒊异或运算符(^)格式:A^B结果:如果两个相应的位相同则该位为0,否则为1例题例10.3计算下列表达式结果,并解释计算过程。①若有定义shorta,b,c;a=14;b=23;计算表达式c=a^b值;②若有定义shorta,b,ca=–12;b=6;计算表达式c=a^b值。①若有定义shorta,b,c;a=14;b=23;计算表达式c=a^b值;(14
20、的补码)0000000000001110^)(23的补码)0000000000010111(14^23补码)0000000000011001十进制数为25②若有定义shorta,b,ca=–12;b=6;计算表达式c=a^b值。(–12的补码)1111111111110100^)(6的补码)0000000000000110(–12^6补码)1111111111110010十进制数为–14按位异或运算的一些用途使特定位“取反”。如,表达式“n=n^0x0001”的结果是将n的最低1位取反,而前15位不变。表达式“n=n^0x00ff”是将n的最后8位取