清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第12章 位运算

清华大学出版社 TSINGHUA UNIVERSITY PRESS 第12章 位运算 12.1 位运算符和位运算 12.2 位运算举例 12.3 位段 习题
第12章 位运算 12.1 位运算符和位运算 12.2 位运算举例 12.3 位段 习题

清华大学出版社 TSINGHUA UNIVERSITY PRESS ·C语言是为描述系统而设计的,因此它应当具有汇编 语言所能完成的一些功能。C语言既具有高级语言的 特点,又具有低级语言的功能,因而具有广泛的用途 和很强的生命力。第9章介绍的指针运算和本章将介 绍的位运算就很适合于编写系统软件的需要,是C语 言的重要特色。在计算机用于检测和控制领域中要用 到位运算的知识,因此读者应当学习和掌握本章的内 容。 。 所谓位运算是指进行二进制位的运算。在系统软件中, 常要处理二进位的问题。例如,将一个存储单元中的 各二进位左移或右移一位,两个数按位相加等。C语 言提供位运算的功能,与其他高级语言(如PASCAL) 相比,它显然具有很大的优越性
• C语言是为描述系统而设计的,因此它应当具有汇编 语言所能完成的一些功能。C语言既具有高级语言的 特点,又具有低级语言的功能,因而具有广泛的用途 和很强的生命力。第9章介绍的指针运算和本章将介 绍的位运算就很适合于编写系统软件的需要,是C语 言的重要特色。在计算机用于检测和控制领域中要用 到位运算的知识,因此读者应当学习和掌握本章的内 容。 • 所谓位运算是指进行二进制位的运算。在系统软件中, 常要处理二进位的问题。例如,将一个存储单元中的 各二进位左移或右移一位,两个数按位相加等。C语 言提供位运算的功能,与其他高级语言(如PASCAL) 相比,它显然具有很大的优越性

清华大学出版社 TSINGHUA UNIVERSITY PRESS 12.1位运算符和位运算 12.1.1“按位与”运算符(&) ·参加运算的两个数据,按二进位进行“与”运算。 如果两个相应的二进位都为1,则该位的结果值为 1,否则为0。即 0&0=0;0&1=0;1&0=0;1&1=1; ·例如:3&5并不等于8,应该是按位与。 3=00000011 (&)5=00000101 00000001
12.1.1 “按位与”运算符(&) • 参加运算的两个数据,按二进位进行“与”运算。 如果两个相应的二进位都为1,则该位的结果值为 1,否则为0。即 • 0&0=0;0&1=0;1&0=0;1&1=1; • 例如: 3&5 并不等于8,应该是按位与。 3 = 00000011 (&) 5 = 00000101 00000001 12.1 位运算符和位运算

清华大学出版社 TSINGHUA UNIVERSITY PRESS 因此,3&5的值得1。如果参加&是负数运算的是 负数(如3&5),则以补码形式表示为二进制数, 然后按位进行“与”运算。 按位与有一些特殊的用途: (①)清零。如果想将一个单元清零,即使其全部 二进位为0,只要找一个二进制数,其中各个位 符合以下条件:原来的数中为1的位,新数中相 应位为0。然后使二者进行&运算,即可达到清 零目的。 如:原有数为00101011,另找一个数,设它为 10010100,它符合以上条件,即在原数为1的位 置上,它的位值均为0。将两个数进行&运算:
因此,3&5的值得1。如果参加&是负数运算的是 负数(如-3 & -5),则以补码形式表示为二进制数, 然后按位进行“与”运算。 按位与有一些特殊的用途: (1) 清零。 如果想将一个单元清零,即使其全部 二进位为0,只要找一个二进制数,其中各个位 符合以下条件:原来的数中为1的位,新数中相 应位为0。然后使二者进行&运算,即可达到清 零目的。 如:原有数为00101011,另找一个数,设它为 10010100,它符合以上条件,即在原数为1的位 置上,它的位值均为0。将两个数进行&运算:

清华大学出版社 TSINGHUA UNIVERSITY PRESS 00101011 (&)10010100 00000000 ·其道理是显然的。当然也可以不用10010100这个 数而用其他数(如01000100)也可以,只要符合上述 条件即可。 ·(2)取一个数中某些指定位。如有一个整数a(2个 字节),想要其中的低字节。只需将a与(737)8按位 与即可。见图12.1
00101011 (&) 10010100 00000000 • 其道理是显然的。当然也可以不用10010100这个 数而用其他数(如01000100)也可以,只要符合上述 条件即可。 • (2) 取一个数中某些指定位。如有一个整数a(2个 字节),想要其中的低字节。只需将a与(737)8按位 与即可。见图12.1

清华大学出版社 ● TSINGHUA UNIVERSITY PRESS a 0010 1100 10101100 b 00 000000 11111111 00 0000 00 10101100 图12.1 a 00101100 10101100 b 11111111 00000000 c 00101100 00000000 图12.2
图12.2 图12.1

清华大学出版社 TSINGHUA UNIVERSITY PRESS c=a&b,b为八进制数的377,运算后c只保留a的低字节, 高字节为0。 ·如果想取两个字节中的高字节,只需c=a&0177400 (0177400表示八进制数的177400)。见图12.2。 ·(3)要想将哪一位保留下来,就与一个数进行&运算,此数 在该位取1,如:有一数01010100,想把其中左面第3、4、 5、7、8位保留下来,可以这样运算: 01010100 (十进制数84) ● (&)00111011 (十进制数59) ● 00010000士进制数16) 。即 a=84,b=59,c=a&b=16
• c=a&b,b为八进制数的377,运算后c只保留a的低字节, 高字节为0。 • 如果想取两个字节中的高字节,只需c=a & 0177400 (0177400表示八进制数的177400)。见图12.2。 • (3) 要想将哪一位保留下来,就与一个数进行&运算,此数 在该位取1,如:有一数01010100,想把其中左面第3、4、 5、7、8位保留下来,可以这样运算: • 01010100 (十进制数84) • (&)00111011 (十进制数59) • 00010000(十进制数16) • 即 a=84,b=59,c=a&b=16

清华大学出版社 TSINGHUA UNIVERSITY PRESS 12.1.2按位或运算符0 两个相应的二进位中只要有一个为1,该位的结 果值为1。即010=0; 01=1; 10=1; 11=1。 例如:0601017 将八进制数60与八进制数17进行按位或运算。 00110000 ● ()00001111 00111111 ·低4位全为1。如果想使一个数a的低4位改为1, 只需将a与017进行按位或运算即可。 按位或运算常用来对一个数据的某些位定值为1。 如:a是一个整数(16位),有表达式a0377则低8
12.1.2 按位或运算符(|) • 两个相应的二进位中只要有一个为1,该位的结 果值为1。即0|0=0; 0|1=1; 1|0=1; 1|1=1。 例如:060|017 • 将八进制数60与八进制数17进行按位或运算。 • 00110000 • (|) 00001111 • 00111111 • 低4位全为1。如果想使一个数a的低4位改为1, 只需将a与017进行按位或运算即可。 • 按位或运算常用来对一个数据的某些位定值为1。 如:a是一个整数(16位),有表达式a |0377则低8

清华大学出版社 TSINGHUA UNIVERSITY PRESS 位全置为1。高8位保留原样。 12.1.3 “异或”运算符(个) ·异或运算符个也称XOR运算符。它的规则是若参 加运算的两个二进位同号,则结果为0(假);异号 则为1(真)。即0∧0=0;0个1=1; 1Λ0=1 1个1=0;如 ● 00111001 (十进制数57,八进制数071) ● (∧)00101010 十进制数42,八进制数052) 00010011 十进制数19,八进制数023) 。 即071个052,结果为023(八进制数)
位全置为1。高8位保留原样。 12.1.3 “异或”运算符(∧) • 异或运算符∧也称XOR运算符。它的规则是若参 加运算的两个二进位同号,则结果为0(假);异号 则为1(真)。即0∧0=0; 0∧1=1; 1∧0=1; 1∧1=0;如: • 00111001 (十进制数57,八进制数071) • (∧)00101010 (十进制数42,八进制数052) • 00010011 (十进制数19,八进制数023) • 即071∧052,结果为023(八进制数)

清华大学出版社 TSINGHUA UNIVERSITY PRESS ·“异或”的意思是判断两个相应的位值是否为 “异”,为“异”(值不同)就取真(),否则为假 (0). 下面举例说明个运算符的应用: (1)使特定位翻转 假设有01111010,想使其低4位翻转,即1变 为0,0变为1。可以将它与00001111进行∧运算, 即 01111010 (∧)00001111 01110101
• “异或”的意思是判断两个相应的位值是否为 “异”,为“异”(值不同)就取真(1),否则为假 (0)。 • 下面举例说明∧运算符的应用: • (1) 使特定位翻转 • 假设有01111010,想使其低4位翻转,即1变 为0,0变为1。可以将它与00001111进行∧运算, 即 • 01111010 • (∧)00001111 • 01110101
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第10章 指针.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第9章 预处理命令.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第8章 函数.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第7章 数组.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第6章 循环控制.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第5章 选择结构程序设计.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第4章 最简单的c程序设计——顺序程序设计.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第3章 数据类型、运算符与表达式.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第2章 程序的灵魂——算法.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第1章 C语言概述.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第12章 文件.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第11章 位运算.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第10章 结构与链表.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第09章 指针.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第08章 编译预处理.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第07章 函数.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第06章 数组.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第05章 循环结构程序设计.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第04章 选择结构程序设计.ppt
- 《C语言程序设计》课程教学课件(PPT讲稿)第03章 顺序结构程序设计.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第13章 文件.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第14章 C++对C的扩充.ppt
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第一讲 预备知识(郑莉、安颖莲).pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第二讲 C语言基础.pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第三讲 C语言程序的基本控制结构.pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第四讲 数组的概念及应用.pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第五讲 函数.pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第六讲 指针.pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第七讲 查找与排序算法.pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第八讲 结构与联合.pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第九讲 位运算 枚举 类型定义 编译预处理.pps
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第11章 结构体与共用体.ppt
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十讲 文件.pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十一讲 数据结构基础(一).pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十二讲 数据结构基础(二).pps
- 清华大学:《C语言程序设计》课程教学资源(PPT课件讲稿)第十三讲 非线性结构及数据结构应用实例.pps
- 中国水利水电出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第01章 C语言概述.ppt
- 中国水利水电出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第02章 数据类型.ppt
- 中国水利水电出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第03章 顺序结构程序设计.ppt
- 中国水利水电出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第04章 选择结构程序设计.ppt