c语言课件位运算
- 格式:ppt
- 大小:899.00 KB
- 文档页数:36
位运算的C语言实现•什么是位运算•位运算有哪些•怎么用?数据在计算机内以二进制的形式存储例如十进制13的二进制形式:0000 1101位运算就是对二进制中的每一位进行处理0101,0111& 1011,10110001,0011•什么是位运算位运算的C语言实现•位运算有哪些1、按位与运算(&)0101,0111& 1011,10110001,00112、按位或运算(|)0101,0111|1011,10111111,1111c=a&b c=a|b位运算的C语言实现3、按位异或运算(^)4、按位求反运算符(~)~a:0101,0111b: 1010,1000a: 0101,0111^ b: 1011,1011c: 1110,1100c=a^bb=~a•位运算有哪些?位运算的C语言实现•位运算有哪些5.移位运算左移、右移运算表达式的一般形式为:x << n 或x >> n其中x为移位运算对象,是要被移位的量;n是要移动的位数。
数据左移或右移后空出来的位置补0。
a: 1101,0011b=a<<2: 0100,1100c=b>>2: 0001,0011位运算的C语言实现•怎么用?位运算使得我们可以灵活处理二进制位,如•用&清零特定位:1010 & 0000 = 0000•用|将某一位置1: 1010 | 0100 = 1110•取某数中指定位•不引用第三个变量,交换两个变量的值tmp=a; a=b;b=tmp;a=a^b; b=b^a; a=a^b;0101,0111 ^1011,1011 1110,1100a b a b a1011,1011 0101,0111位运算的C语言实现•用在哪里?And--用于二进制取位操作,例如:and 1的结果就是取二进制的最末位。
这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。
第十二章位运算前面介绍的各种运算都是以字节作为最基本位进行的。
但在很多系统程序中常要求在位(bit)一级进行运算或处理。
C语言提供了位运算的功能,这使得C语言也能像汇编语言一样用来编写系统程序。
12.1 位运算符C语言提供了六种位运算符:& 按位与 | 按位或 ^ 按位异或~ 取反 << 左移 >> 右移12.1.1 按位与运算按位与运算符"&"是双目运算符。
功能:参与运算的两数各对应的二进位相与。
运算规则:只有对应的两个二进位均为1时,结果位才为1,否则为0。
参与运算的数以补码方式出现。
12.1.2 按位或运算按位或运算符“|”是双目运算符。
功能:参与运算的两数各对应的二进位相或。
运算规则:只要对应的二个二进位有一个为1时,结果位就为1。
参与运算的两个数均以补码出现。
12.1.3 按位异或运算按位异或运算符“^”是双目运算符。
功能:参与运算的两数各对应的二进位相异或,运算规则:当两对应的二进位相异时,结果为1。
否则,结果位为0;参与运算数仍以补码出现。
12.1.4 求反运算求反运算符~为单目运算符,具有右结合性。
其功能是对参与运算的数的各二进位按位求反。
例如~9的运算为:~(0000000000001001)结果为:111111111111011012.1.5 左移运算左移运算符“<<”是双目运算符。
其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。
例如:a<<4指把a的各二进位向左移动4位。
如a=00000011(十进制3),左移4位后为00110000(十进制48)。
12.1.6 右移运算右移运算符“>>”是双目运算符。
其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。