kj-第11章位运算ppt课件(全).ppt
《kj-第11章位运算ppt课件(全).ppt》由会员分享,可在线阅读,更多相关《kj-第11章位运算ppt课件(全).ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第11章章 位运算位运算 本章概述 本章的学习目标主要内容1本章概述本章概述lC语言有一个重要特点就是可以直接对二进制位语言有一个重要特点就是可以直接对二进制位进行操作,即位运算。进行操作,即位运算。l二进制位简称位(二进制位简称位(bit),其值为),其值为0或或1。计算机真。计算机真正执行的正是由正执行的正是由0和和1构成的机器指令,计算机内构成的机器指令,计算机内数据也是由二进制表示的。数据也是由二进制表示的。l数在计算机内均是以补码的形式存储的数在计算机内均是以补码的形式存储的。l本章介绍位运算和位段结构的有关知识。本章介绍位运算和位段结构的有关知识。2本章的学习目标本章的学习目标l
2、本章教学目的:理解位运算的概念,本章教学目的:理解位运算的概念,掌握基本位运算运算符的使用,理解掌握基本位运算运算符的使用,理解位段的概念。位段的概念。l本章教学重点:基本位运算运算符的本章教学重点:基本位运算运算符的使用使用l本章教学难点:位段的概念本章教学难点:位段的概念3主要内容主要内容11.1 位运算符位运算符 11.2 位运算位运算 11.3 位运算应用举例位运算应用举例 11.4 位段结构位段结构 411.1 位运算符位运算符位运算符位运算符功能功能举举例例按位取反按位取反a:对变对变量量a的全部位取反的全部位取反左移左移 a右移右移 a2:将:将变变量量a的各位全部右移的各位全部
3、右移2位,位,对对于于无符号数和正整数,高位无符号数和正整数,高位补补0;对对于于负负整数,整数,高位高位补补1(适用于(适用于turboc系系统统)&按位与按位与 a&b:对对a与与b的各的各对应对应位位进进行行“按位与按位与”运算运算|按位或按位或 a|b:对对a与与b的各的各对应对应位位进进行行“按位或按位或”运算运算按位异或按位异或 ab:对对a与与b的各的各对应对应位位进进行行“按位异或按位异或”运算运算511.2 11.2 位运算位运算 取反运算取反运算“”是一个单目运算符,运算量在运是一个单目运算符,运算量在运算符之后,取反运算的功能是将一个数据中所有位都算符之后,取反运算的功能
4、是将一个数据中所有位都取其相反值,即取其相反值,即1变变0,0变变1。运算规则为:运算规则为:1=0 0=1例例11.1 对于无符号的字符型数据对于无符号的字符型数据a=(18)10=(00010010)2,则则a等于等于(11101101)2,即,即(237)10C程序如下:程序如下:11.2.1 按位取反运算按位取反运算6#include int main()unsigned char a=18,b;b=a;printf(“a=%d”,b);return 0;运行结果为:运行结果为:a=237 注注意意以以下下程程序序与与左左面面程程序序及及运行结果的区别:运行结果的区别:#include
5、 int main()char a=18,b;b=a;printf(“a=%d”,b);return 0;运行结果:运行结果:-19 前一个程序结果很好理解,后一个因为前一个程序结果很好理解,后一个因为a是带符号数据,因是带符号数据,因此此a=(11101101)2的结果是一负数的补码,转换为原码时,第的结果是一负数的补码,转换为原码时,第1位位符号位不变,对剩余的部分先减符号位不变,对剩余的部分先减1,再全部取反,因此得到的二,再全部取反,因此得到的二进制原码为:进制原码为:10010011,即十进制的,即十进制的-19。711.2 11.2 位运算位运算11.2.2 左移运算左移运算 左左
6、移移运运算算“”是是一一个个双双目目运运算算符符,左左移移运运算算的的功功能能是是将将一一个个数数据据所所有有位位向向左左移移若若干干位位,左左边边(高高位位)移出的部分舍去,右边(低位)自动补零。移出的部分舍去,右边(低位)自动补零。例例11.2 对于无符号字符型数据对于无符号字符型数据 a=(18)10=(00010010)2,a 3的结果是的结果是(10010000)2,即(,即(144)108C程序如下:程序如下:#include int main()unsigned char a=18,b;b=a3;printf(“a3=%d”,b);运行结果为:运行结果为:a3=144注意以下程序
7、与左面程序的区别:注意以下程序与左面程序的区别:#include int main()char a=18,b;b=a3;printf(“a3=%d”,b);return 0;运行结果为:运行结果为:a3=-112 原原因因同同前前,对对于于带带符符号号数数a,因因a”是是一一个个双双目目运运算算符符,右右移移运运算算的的功功能能是是将将一一个个数数据据所所有有位位向向右右移移若若干干位位,右右边边(低低位位)移移出出的的部部分分舍舍去去,左左边边(高高位位)移移入入的的二二进进制制数数分分两两种种情情况况:对对于于无无符符号号数数和和正正整整数数,高高位位补补0;对对于于负负整整数数,高高位位
8、补补1(适用于适用于turboc系统系统)。)。例例11.3 对于无符号字符型数据对于无符号字符型数据 a=(18)10=(00010010)2,则则 a 3的结果是的结果是(00000010)2,即(,即(2)1010C程序:程序:#include int main()unsigned char a=18,b;b=a3;printf(“a3=%d”,b);return 0;运行结果为:运行结果为:a3=21111.2 11.2 位运算位运算11.2.4 按位与运算按位与运算 按位按位“与与”运算符要求有两个运算量,其功能是将两个运算符要求有两个运算量,其功能是将两个运算量的各个相应位分别进行
9、运算量的各个相应位分别进行“与与”运算。运算。运算规则为运算规则为:1&1=1 0&1=0 1&0=0 0&0=0 例例11.4 对于无符号数对于无符号数a=(173)10=(10101101)2,b=(203)10=(11001011)2,则则a&b=(10001001)2=(137)10 10101101&11001011 1000100112例例11.5 对于有符号数对于有符号数a=(-83)10=(10101101)2,b=(-53)10=(11001011)2,则则a&b=(10001001)2=(-119)10 。以上二进制形式是负数的补码。以上二进制形式是负数的补码。C程序如右上
10、所示。程序如右上所示。C程序:程序:#include int main()unsigned char a=173,b=203,c;c=a&b;printf(“a&b=%d”,c);return 0;运行结果为:运行结果为:a&b=137 10101101&11001011 10001001C程序:程序:#include int main()char a=-83,b=-53,c;c=a&b;printf(“a&b=%d”,c);return 0;运行结果为:运行结果为:a&b=-1191311.2 11.2 位运算位运算11.2.5 按位或运算按位或运算 按位按位“或或”运算符要求有两个运算量,
11、其功能是将运算符要求有两个运算量,其功能是将两个运算量的各个相应位分别进行两个运算量的各个相应位分别进行“或或”运算。运算。运算规则为运算规则为:1|1=1 0|1=1 1|0=1 0&0=0例例11.6 对于无符号数对于无符号数a=(173)10=(10101101)2,b=(203)10=(11001011)2,则,则a|b=(11101111)2=(239)10 10101101|11001011 1110111114 例例11.7 对于有符号数对于有符号数 a=(-83)10=(10101101)2,b=(-53)10=(11001011)2,则则a|b=(11101111)2=(-1
12、7)10C程序:#include int main()unsigned char a=173,b=203,c;c=a|b;printf(“a|b=%d”,c);return 0;运行结果:运行结果:a|b=239 10101101|11001011 1110111115C程序:#include int main()char a=-83,b=-53,c;c=a|b;printf(“a|b=%d”,c);return 0;运行结果为:运行结果为:a|b=-171611.2 11.2 位运算位运算11.2.6 按位异或运算按位异或运算 按按位位“异异或或”运运算算符符要要求求有有两两个个运运算算量量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- kj 11 运算 ppt 课件
限制150内