第13章位操作精选文档.ppt
《第13章位操作精选文档.ppt》由会员分享,可在线阅读,更多相关《第13章位操作精选文档.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第13章位操作本讲稿第一页,共十八页二进制位运算二进制位运算二进制位运算二进制位运算13.113.1教学进程教学进程教学进程教学进程 指对二进制位进行的运算。每个二进制位中只能存放指对二进制位进行的运算。每个二进制位中只能存放指对二进制位进行的运算。每个二进制位中只能存放指对二进制位进行的运算。每个二进制位中只能存放0 0或或或或1 1。通常,将一个数据用二进制数表示后,最右边的二进制位称为最低位通常,将一个数据用二进制数表示后,最右边的二进制位称为最低位通常,将一个数据用二进制数表示后,最右边的二进制位称为最低位通常,将一个数据用二进制数表示后,最右边的二进制位称为最低位(第(第(第(第0
2、0位),最左边的二进制位为最高位。位),最左边的二进制位为最高位。位),最左边的二进制位为最高位。位),最左边的二进制位为最高位。位运算位运算位运算位运算位位位位 运运运运 算算算算 符符符符意意意意 义义义义&|按位与按位与按位与按位与按位或按位或按位或按位或按位异或按位异或按位异或按位异或按位取反按位取反按位取反按位取反左移左移左移左移右移右移右移右移在在在在C C语言中共提供了六种位运算符语言中共提供了六种位运算符语言中共提供了六种位运算符语言中共提供了六种位运算符 在这六种位运算符中,其中按位在这六种位运算符中,其中按位在这六种位运算符中,其中按位在这六种位运算符中,其中按位取反是单目
3、运算符,只有一个运算对象,取反是单目运算符,只有一个运算对象,取反是单目运算符,只有一个运算对象,取反是单目运算符,只有一个运算对象,其他均为双目运算符,有两个运算对象。其他均为双目运算符,有两个运算对象。其他均为双目运算符,有两个运算对象。其他均为双目运算符,有两个运算对象。位运算的运算对象只能是整型位运算的运算对象只能是整型位运算的运算对象只能是整型位运算的运算对象只能是整型(包括(包括(包括(包括intint,shortshort,longlong,unsignedunsigned)或)或)或)或字符型数据,而不能是实型数据。字符型数据,而不能是实型数据。字符型数据,而不能是实型数据。字
4、符型数据,而不能是实型数据。注意注意注意注意本讲稿第二页,共十八页二进制位运算二进制位运算二进制位运算二进制位运算 优先级优先级优先级优先级教学进程教学进程教学进程教学进程!(!(逻辑非逻辑非逻辑非逻辑非)-)-按位取反按位取反按位取反按位取反 -算术运算符算术运算符算术运算符算术运算符 -左移运算符左移运算符左移运算符左移运算符-关系运关系运关系运关系运算符算符算符算符 -按位与按位与按位与按位与&、按位异或、按位异或、按位异或、按位异或、按位或、按位或、按位或、按位或|-&|-&与与与与|-|-赋值运算符赋值运算符赋值运算符赋值运算符“按位与按位与按位与按位与”运算符(运算符(运算符(运算
5、符(&)规则规则规则规则 若两个运算对象的对应二进制位均是若两个运算对象的对应二进制位均是若两个运算对象的对应二进制位均是若两个运算对象的对应二进制位均是1 1,则结果的对应位,则结果的对应位,则结果的对应位,则结果的对应位 是是是是1 1,否则为,否则为,否则为,否则为0 0。即对应二进制位上可能的。即对应二进制位上可能的。即对应二进制位上可能的。即对应二进制位上可能的“按位与按位与按位与按位与”运算运算运算运算 组合为组合为组合为组合为 0&0=10&0=1,0&1=00&1=0,1&0=01&0=0,1&1=11&1=1例如,短整数(假设一个短整数占例如,短整数(假设一个短整数占例如,短
6、整数(假设一个短整数占例如,短整数(假设一个短整数占8 8位二进制位,下同)位二进制位,下同)位二进制位,下同)位二进制位,下同)1313(十六进制表(十六进制表(十六进制表(十六进制表示为示为示为示为0 x0d0 x0d)与短整数)与短整数)与短整数)与短整数2121(十六进制表(十六进制表(十六进制表(十六进制表示为示为示为示为0 x150 x15)进行)进行)进行)进行“按位与按位与按位与按位与”如下:因如下:因如下:因如下:因此,此,此,此,13&21=513&21=5,即,即,即,即0 x0d&0 x15=0 x050 x0d&0 x15=0 x05。0 0 0 0 1 1 0 1
7、130 0 0 0 1 1 0 1 13的二进制数的二进制数的二进制数的二进制数(&)0 0 0 1 0 1 0 1 210 0 0 1 0 1 0 1 21的二进制数的二进制数的二进制数的二进制数 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 本讲稿第三页,共十八页“按位与按位与按位与按位与”运算符(运算符(运算符(运算符(&)13.1.113.1.1 特别要指出的是,如果参加特别要指出的是,如果参加特别要指出的是,如果参加特别要指出的是,如果参加“按位与按位与按位与按位与”运算的对象为负整数,则在运算的对象为负整数,则在运算的对象为负整数,则在运算的对象为负整数,则在 计
8、算机中是以补码形式表示的。计算机中是以补码形式表示的。计算机中是以补码形式表示的。计算机中是以补码形式表示的。教学进程教学进程教学进程教学进程例如,短负整数例如,短负整数例如,短负整数例如,短负整数-13-13(二进制补码的十六进制表示为(二进制补码的十六进制表示为(二进制补码的十六进制表示为(二进制补码的十六进制表示为0 xf30 xf3)与短整数)与短整数)与短整数)与短整数2121(十六进制表示为(十六进制表示为(十六进制表示为(十六进制表示为0 x150 x15)进行)进行)进行)进行“按位与按位与按位与按位与”因此,因此,因此,因此,-13&21=17-13&21=17,即,即,即,
9、即0 xf3&0 x15=0 x110 xf3&0 x15=0 x11。1 1 1 1 0 0 1 1 -131 1 1 1 0 0 1 1 -13的二进制数补码表示的二进制数补码表示的二进制数补码表示的二进制数补码表示 (&)0 0 0 1 0 1 0 1 210 0 0 1 0 1 0 1 21的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是其本身)0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 本讲稿第四页,共十八页“按位与按位与按位与按位与”运算符(运算符(运算符(运算符(&)教学进
10、程教学进程教学进程教学进程例如,如果要取整型变量例如,如果要取整型变量例如,如果要取整型变量例如,如果要取整型变量x x的低字节(即低八位),则可以作的低字节(即低八位),则可以作的低字节(即低八位),则可以作的低字节(即低八位),则可以作 如下运算:如下运算:如下运算:如下运算:x&0 xffx&0 xff。功能功能功能功能(1 1)取出数据中指定的位)取出数据中指定的位)取出数据中指定的位)取出数据中指定的位(2 2)将数据中的指定位清零)将数据中的指定位清零)将数据中的指定位清零)将数据中的指定位清零例如,为了将整型变量例如,为了将整型变量例如,为了将整型变量例如,为了将整型变量x x的
11、第的第的第的第4 4位清零,则可以用如下赋值语句:位清零,则可以用如下赋值语句:位清零,则可以用如下赋值语句:位清零,则可以用如下赋值语句:x=x&0 xffefx=x&0 xffef;【例例例例1 1】编制一个编制一个编制一个编制一个C C程序,其功能是将正整型数组中所有元素转换为不程序,其功能是将正整型数组中所有元素转换为不程序,其功能是将正整型数组中所有元素转换为不程序,其功能是将正整型数组中所有元素转换为不 大于它的最大偶数,并显示输出。大于它的最大偶数,并显示输出。大于它的最大偶数,并显示输出。大于它的最大偶数,并显示输出。为了将一个正整数转换为不大于它的最大偶数,只需将该正整数所对
12、为了将一个正整数转换为不大于它的最大偶数,只需将该正整数所对为了将一个正整数转换为不大于它的最大偶数,只需将该正整数所对为了将一个正整数转换为不大于它的最大偶数,只需将该正整数所对应的二进制数的最低位清零即可,即用应的二进制数的最低位清零即可,即用应的二进制数的最低位清零即可,即用应的二进制数的最低位清零即可,即用0 xfffe0 xfffe与该正整数作与该正整数作与该正整数作与该正整数作“按位与按位与按位与按位与”运算。运算。运算。运算。其其其其C C程序如下:程序如下:程序如下:程序如下:本讲稿第五页,共十八页“按位与按位与按位与按位与”运算符(运算符(运算符(运算符(&)教学进程教学进程
13、教学进程教学进程#include stdio.h#include stdio.h main()main()int k int k,a10=23a10=23,1414,2424,3131,4646,5555,3333,6868,2727,4040;for(k=0for(k=0;k k1010;k k)printf(printf(5d5d,ak)ak);printf(n)printf(n);for(k=0for(k=0;k k1010;k k)ak=ak&0 xfffe ak=ak&0 xfffe;/*/*将正整数转换为不大于它的最大偶数将正整数转换为不大于它的最大偶数将正整数转换为不大于它的最大
14、偶数将正整数转换为不大于它的最大偶数*/for(k=0 for(k=0;k k1010;k k)printf(printf(5d5d,ak)ak);printf(n)printf(n);上述程序的运行结果为上述程序的运行结果为上述程序的运行结果为上述程序的运行结果为 23 14 24 31 46 55 33 68 27 4023 14 24 31 46 55 33 68 27 40 22 14 24 30 46 54 32 68 26 40 22 14 24 30 46 54 32 68 26 40本讲稿第六页,共十八页“按位或按位或按位或按位或”运算符运算符运算符运算符(|)12.1.212
15、.1.2教学进程教学进程教学进程教学进程“按位或按位或按位或按位或”运算符(运算符(运算符(运算符(|)规则规则规则规则 若两个运算对象的对应二进制位中有一个是若两个运算对象的对应二进制位中有一个是若两个运算对象的对应二进制位中有一个是若两个运算对象的对应二进制位中有一个是1 1,则结果的,则结果的,则结果的,则结果的对应位是对应位是对应位是对应位是1 1,否则为,否则为,否则为,否则为0 0。即对应二进制位上可能的。即对应二进制位上可能的。即对应二进制位上可能的。即对应二进制位上可能的“按位或按位或按位或按位或”运运运运算组合为算组合为算组合为算组合为 0|0=00|0=0,0|1=10|1
16、=1,1|0=11|0=1,1|1=11|1=1例如,例如,例如,例如,短整数短整数短整数短整数1313(十六进制表示为(十六进制表示为(十六进制表示为(十六进制表示为0 x0d0 x0d)与短整数)与短整数)与短整数)与短整数2121(十六进制表示为(十六进制表示为(十六进制表示为(十六进制表示为0 x150 x15)进行)进行)进行)进行“按位或按位或按位或按位或”如下:如下:如下:如下:0 0 0 0 1 1 0 1 130 0 0 0 1 1 0 1 13的二进制数的二进制数的二进制数的二进制数 (|)0 0 0 1 0 1 0 1 210 0 0 1 0 1 0 1 21的二进制数的
17、二进制数的二进制数的二进制数 0 0 0 1 1 1 0 1 0 0 0 1 1 1 0 1 因此,因此,因此,因此,13|21=2913|21=29,即,即,即,即0 x0d|0 x15=0 x1d0 x0d|0 x15=0 x1d。1 1 1 1 0 0 1 1 -131 1 1 1 0 0 1 1 -13的二进制数补码表示的二进制数补码表示的二进制数补码表示的二进制数补码表示 (|)0 0 0 1 0 1 0 1 210 0 0 1 0 1 0 1 21的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是
18、其本身)1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 因此,因此,因此,因此,-13|21=-9-13|21=-9,即,即,即,即0 xf3|0 x15=0 xf70 xf3|0 x15=0 xf7。短负整数短负整数短负整数短负整数-13-13(二进制补码的十六进制表示为(二进制补码的十六进制表示为(二进制补码的十六进制表示为(二进制补码的十六进制表示为0 xf30 xf3)与短整数)与短整数)与短整数)与短整数2121(十六进制表示为(十六进制表示为(十六进制表示为(十六进制表示为0 x150 x15)进行)进行)进行)进行“按位或按位或按位或按位或”本讲稿第七页,共十八页
19、“按位或按位或按位或按位或”运算符(运算符(运算符(运算符(|)“按位或按位或按位或按位或”运算通常用于对一个数据的某些位置运算通常用于对一个数据的某些位置运算通常用于对一个数据的某些位置运算通常用于对一个数据的某些位置1 1,而其余位不变。,而其余位不变。,而其余位不变。,而其余位不变。教学进程教学进程教学进程教学进程例如,例如,例如,例如,要将整型变量要将整型变量要将整型变量要将整型变量x x的低字节(即低八位)置的低字节(即低八位)置的低字节(即低八位)置的低字节(即低八位)置1 1,而高字节(即高,而高字节(即高,而高字节(即高,而高字节(即高 八位)不变,则可以用如下赋值语句:八位)
20、不变,则可以用如下赋值语句:八位)不变,则可以用如下赋值语句:八位)不变,则可以用如下赋值语句:x=x|0 x00ffx=x|0 x00ff;【例例例例2 2】编制一个编制一个编制一个编制一个C C程序,其功能是将正整型数组中所有元素转换程序,其功能是将正整型数组中所有元素转换程序,其功能是将正整型数组中所有元素转换程序,其功能是将正整型数组中所有元素转换 为不小于它的最小奇数,并显示输出。为不小于它的最小奇数,并显示输出。为不小于它的最小奇数,并显示输出。为不小于它的最小奇数,并显示输出。为了将一个正整数转换为不小于它的最小奇数,只需将该正整数为了将一个正整数转换为不小于它的最小奇数,只需将
21、该正整数为了将一个正整数转换为不小于它的最小奇数,只需将该正整数为了将一个正整数转换为不小于它的最小奇数,只需将该正整数所对应的二进制数的最低位置所对应的二进制数的最低位置所对应的二进制数的最低位置所对应的二进制数的最低位置1 1即可,即用即可,即用即可,即用即可,即用0 x00010 x0001与该正整数作与该正整数作与该正整数作与该正整数作“按位按位按位按位或或或或”运算。其运算。其运算。其运算。其C C程序如下:程序如下:程序如下:程序如下:本讲稿第八页,共十八页“按位或按位或按位或按位或”运算符(运算符(运算符(运算符(|)教学进程教学进程教学进程教学进程#include stdio.
22、h#include stdio.h main()main()int k int k,a10=23a10=23,1414,2424,3131,4646,5555,3333,6868,2727,4040;for(k=0for(k=0;k k1010;k k)printf(printf(5d5d,ak)ak);printf(n)printf(n);for(k=0for(k=0;k k1010;k k)ak=ak|0 x0001 ak=ak|0 x0001;/*/*将正整数转换为不小于它的最小奇数将正整数转换为不小于它的最小奇数将正整数转换为不小于它的最小奇数将正整数转换为不小于它的最小奇数*/for
23、(k=0 for(k=0;k k1010;k k)printf(printf(5d5d,ak)ak);printf(n)printf(n);上述程序的运行结果为上述程序的运行结果为上述程序的运行结果为上述程序的运行结果为 23 14 24 31 46 55 33 68 27 4023 14 24 31 46 55 33 68 27 40 23 15 25 31 47 55 33 69 27 41 23 15 25 31 47 55 33 69 27 41本讲稿第九页,共十八页“按位异或按位异或按位异或按位异或”运算符(运算符(运算符(运算符()13.1.313.1.3教学进程教学进程教学进程教
24、学进程“按位异或按位异或按位异或按位异或”运算符(运算符(运算符(运算符()规则规则规则规则 若两个运算对象的对应二进制位不相等,则结果的对应位若两个运算对象的对应二进制位不相等,则结果的对应位若两个运算对象的对应二进制位不相等,则结果的对应位若两个运算对象的对应二进制位不相等,则结果的对应位 是是是是1 1,否则为,否则为,否则为,否则为0 0。即对应二进制位上可能的。即对应二进制位上可能的。即对应二进制位上可能的。即对应二进制位上可能的“按位异或按位异或按位异或按位异或”运算运算运算运算 组合为组合为组合为组合为 00=000=0,01=101=1,10=110=1,11=011=0 1
25、1 1 1 0 0 1 1 -131 1 1 1 0 0 1 1 -13的二进制数补码表示的二进制数补码表示的二进制数补码表示的二进制数补码表示 ()0 0 0 1 0 1 0 1 210 0 0 1 0 1 0 1 21的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是其本身)的二进制数补码(正数的补码是其本身)1 1 1 0 0 1 1 0 1 1 1 0 0 1 1 0 因此,因此,因此,因此,-1321=-26-1321=-26,即,即,即,即0 xf30 x15=0 xe60 xf30 x15=0 xe6。短负整数短负整数短负整数短负
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 操作 精选 文档
限制150内