C语言程序设计曹哲曹哲书xg第11章节xg.pptVIP

  • 1
  • 0
  • 约5千字
  • 约 41页
  • 2018-01-21 发布于广东
  • 举报

C语言程序设计曹哲曹哲书xg第11章节xg.ppt

第11章 位运算 总结 尚辅网 / 学习内容指南 11.1 位运算符和位运算 11.2 位段 11.3 位运算应用举例 11.1 位运算符和位运算 由于是对二进制位进行与,或和异或等操作,因此,将位运算称作按位运算。 六种位运算符: 按位与 ~ 按位取反 | 按位或 左移 ^ 按位异或 右移 定义:直接对二进制位进行的运算称作位运算。位运算只能对整型数据或者字符型数据进行运算,而不能对浮点型等其他数据类型进行操作,而且均以补码形式参与运算。 只有按位取反运算符是单目运算符其他均为双目运算符 “”定义:  参加运算的两个数据,按二进制位进行逻辑与运算。即,如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。 按位与运算符“” 例:求5 6。 解:5的二进制是101,6对应的二进制是110。在C语言中,5和6都是整型常量,因此可以进行位运算。即: 0000 0000 0000 0101 0000 0000 0000 0110 0000 0000 0000 0100 运行结果: c=4 #include stdio.h void main ( ) { int a = 5 , b = 6 , c ; c = a b ;  printf ( c=%d\n , c ) ; }  如果将一个存储单元(1个字节,8个二进制位)清零,则将该存储单元的数据与0进行运算就可以。 1. 将存储单元清零 例:如果某存储单元的内容是十进制的整数10,通过运算将该存储单元清零。 解:将该单元的内容10与0进行运算,结果送回该单元即可如下计算:即: 0000 1010 0000 0000 0000 0000 按位与运算作用 #include stdio.h void main ( ) { char a = 10 ; a = a 0 ; printf ( a=%d\n , a ) ; }  若要保留整数a中连续或不连续的某1位或某几位数,则将其整数b进行运算,并且将b中对应位(a中要保留的二进制位)置为1,其他置为0即可。 2.保留一个数中某些指定位 如a对应的二进制是0100 1111,要把左数第1,2,3,5位保留下来,则令b中左数,1,2,3,5位为1,其他为0,即b为1110 1000。如下计算:即: 0100 1111 1110 1000 0100 1000 按位与运算作用 除上述两个应用以外,按位与运算还可以用来判断某个数的奇偶性,在此不再赘述。 “|”定义: 参加运算的两个数据,按二进制位进行逻辑或运算。即,如果两个相应的二进制位只要有一个为1,则该位的结果值为1;否则为0。 按位或运算符“|” 例:求5 | 6。 解:5对应的二进制是101,6对应的二进制是110。在C语言中,5和6都是整型常量,5 | 6的计算如下:即: 0000 0000 0000 0101 | 0000 0000 0000 0110 0000 0000 0000 0111 #include stdio.h void main ( ) { int a = 5 , b = 6 , c ; c = a | b ; printf ( %d\n , c ) ; } 按位或运算作用 如想使一个数a的低4位全为1,只需将a与 0000 0000 0000 1111进行按位或运算即可,即 a | 15。如果a = 10,则计算过程如下: 0000 0000 0000 1010 | 0000 0000 0000 1111 0000 0000 0000 1111 按位或运算常用来对一个数据的某些位定值为1,并保持其他位不变。 “^”定义:  参加运算的两个数据,两个二进制位相同则结果为0,不同则结果为1。 按位异或运算符“^” 例如: 0011 1001 ^ 0010 1010 0001 0011 即:071 ^ 05

文档评论(0)

1亿VIP精品文档

相关文档