第位运算学习.pptx
《第位运算学习.pptx》由会员分享,可在线阅读,更多相关《第位运算学习.pptx(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)返回本章目录返回本章目录8.1 8.1 位运算的位运算的位运算的位运算的C C程序实例程序实例程序实例程序实例【例例8.1】从结果可以看出,在这个程序中出现的几种运算符显然不同于以前,它们不是两个十进制数值之间简单的运算,而是十进制数对应的二进制“位”的运算。第1页/共45页【例例例例8.18.1】实例实例实例实例 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计
2、计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)返回本节目录返回本节目录程序演示程序演示【例8.1】编写程序完成对两个整型量进行按位逻辑运算。程序名为l8_1.cpp。#include stdio.hmain()int a,b;printf(input the numbers:);scanf(%d,%d,&a,&b);printf(%dn,a&b);/*输出按位与结果*/printf(%dn,a|b);/*输出按位或结果*/printf(%dn,ab);/*输出按位异或结果*/printf(%un,a);/*输出 a的按位取反结果*/运行情况
3、为:input the numbers:输入:9,5 1131265526第2页/共45页 例例例例8.18.1程序演示程序演示程序演示程序演示输入源程序弹出运行结果窗口返回例题返回例题返回本节目录返回本节目录第3页/共45页 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)返回本章目录返回本章目录8.2 8.2 二进制位运算二进制位运算二进制位运算二进制位运算8.2.1 二进制位运算二进制位运算8.2.2 位复合赋值运算符位复合赋值运算符所谓位运算是指
4、进行二进制位的运算。在系统软件中,常要处理二进制位的问题。C语言提供了按位运算的功能,这使得它与其它高级语言相比,具有很强的优越性。第4页/共45页 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)8.2.1 8.2.1 二进制位运算二进制位运算二进制位运算二进制位运算类 型运算符含义位逻辑运算符&按位与|按位或按位异或取反移位运算 符右移语言提供了六种位运算符(见表8-1):表8-1位逻辑运算与移位运算返回本节目录返回本节目录第5页/共45页 C C
5、C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)8.2.1 8.2.1 二进制位运算二进制位运算二进制位运算二进制位运算说明:运算量只能是整型或字符型的数据,不能为实型或结构体等类型的数据。六个位运算符的优先级由高到低依次为:取反、左移和右移、按位与、按位异或、按位或。两个不同长度的数据进行位运算时,系统会将二者按右端对齐。下面对各种位运算符介绍如下:返回本节目录返回本节目录1“按位与按位与”运算符运算符(&)2“按位或按位或”运算符(运算符(|)3“按位异或按
6、位异或”运算符运算符()4“求反求反”运算符运算符()5“左移左移”运算符运算符()第6页/共45页 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)1 1“按位与按位与按位与按位与”运算符(运算符(运算符(运算符(&)&)(1)规则:参与运算的两数(以补码方式出现)各对应的二进位相与(即逻辑乘),只有对应的两个二进位均为1时,结果位才为1,否则为0,它是双目运算符。即:0&0=0;0&1=0;1&0=0;1&1=1。例如:9&5可写算式如下:9的二进制
7、补码:0 0 0 0 1 0 0 15的二进制补码:0 0 0 0 0 1 0 1&_ 0 0 0 0 0 0 0 1(1的二进制补码)可见9&5=1。返回返回8.2.18.2.1目录目录第7页/共45页 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)1 1“按位与按位与按位与按位与”运算符(运算符(运算符(运算符(&)&)(2)特殊用途:清零按位与运算通常用来对某些位清0。由按位与的规则可知:为了使某数的指定位清零,可将该数按位与一特定数。该数中为1
8、的位,特定数中相应位应为0;该数中为0的位,特定数中相应位可以为0也可以为1。由此可见,能对某一个数的指定位清零的数并不唯一。【例8.2】取一个数中某些位可将该数与一个特定数进行&运算,对于要取的那些位,特定数中相应的位设为1。【例8.3】取出数中某一位要相将一个数的某一位保留下来,可将该数与一个特定数进行&运算,特定数的相对应的那位应为1。【例8.4】返回本节目录返回本节目录第8页/共45页【例例例例8.28.2】实例实例实例实例 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6
9、66.0 00环环环境境境)返回返回1 1目录目录程序演示程序演示【例8.2】对原数00110110中为1的位清零。原数补码:0 0 1 1 0 1 1 0清零的数:1 1 0 0 0 0 0 0 (或01000000、00000000等)&_ 0 0 0 0 0 0 0 0 程序可写为:#include stdio.hmain()int a=0 x36,b=0 xc0,c;c=a&b;printf(a=%xnb=%xnc=%xn,a,b,c);运行情况为:a=36b=c0c=0 第9页/共45页 例例例例8.28.2程序演示程序演示程序演示程序演示输入源程序弹出运行结果窗口返回例题返回例题返
10、回返回1 1目录目录第10页/共45页【例例例例8.38.3】实例实例实例实例 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)返回返回1 1目录目录程序演示程序演示【例8.3】把a的高八位清0,保留低八位。可作a&255运算(255的二进制数为0000000011111111)。#include stdio.hmain()int a,b=255,c;scanf(%d,&a);c=a&b;printf(a=%xnb=%xnc=%xn,a,b,c);运行情
11、况为:输入:920a=398b=ffc=98 第11页/共45页 例例例例8.38.3程序演示程序演示程序演示程序演示输入源程序弹出运行结果窗口返回例题返回例题返回返回1 1目录目录第12页/共45页【例例例例8.48.4】实例实例实例实例 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)返回返回1 1目录目录程序演示程序演示【例8.4】编写程序将a(=9)的最低位取出。程序名为l8_4cpp。#include stdio.hmain()int a=9,
12、b=1,c;c=a&b;printf(a=%xnb=%xnc=%xn,a,b,c);运行情况为:a=9b=1c=1第13页/共45页 例例例例8.48.4程序演示程序演示程序演示程序演示输入源程序弹出运行结果窗口返回例题返回例题返回返回1 1目录目录第14页/共45页 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)2 2“按位或按位或按位或按位或”运算符(运算符(运算符(运算符(|)(1)规则参与运算的两数(以补码出现)各对应的二进位相或(即逻辑加)。
13、只要对应的两个二进位有一个为1时,结果位就为1,它是双目运算符。即:0|0=0;0|1=1;1|0=1;1|1=1。例如:9|5可写算式如下:0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1|_ 0 0 0 0 1 1 0 1 (十进制为13)可见9|5=13。(2)特殊用途将一个数据的某些指定的位置为1。将该数按位或一个特定的数,该特定的数的相应位置为1。【例8.5】返回返回8.2.18.2.1目录目录第15页/共45页【例例例例8.58.5】实例实例实例实例 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis
14、ssu uua aal ll C CC+6 66.0 00环环环境境境)返回返回2 2目录目录【例8.5】将一个数的低5位置为1。程序名为l8_5.cpp。只需将该数与“00011111”进行&运算。如:#(#可代表0或1)0 0 0 1 1 1 1 1|_#1 1 1 1 1#include stdio.hmain()int a,b=31,c;scanf(%d,&a);c=a|b;printf(a=%xnb=%xnc=%xn,a,b,c);运行情况为:输入:5a=5b=1fc=1f程序演示程序演示第16页/共45页 例例例例8.58.5程序演示程序演示程序演示程序演示输入源程序弹出运行结果窗
15、口返回例题返回例题返回返回2 2目录目录第17页/共45页 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)3 3“按位异或按位异或按位异或按位异或”运算符(运算符(运算符(运算符()(1)规则参与运算的两数(以补码出现)各对应的二进位相异或,当两对应的二进位相异时,结果为1,它是双目运算符。即:00=0;01=1;10=1;11=0。例如:95可写成算式如下:0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 _ 0 0 0 0 1 1 0
16、 0 (十进制为12)可见95=12。(2)特殊用途使特定位翻转 【例8.6】要使哪几位翻转就将与其进行“按位异或”运算的数的相应位置为1。使特定位保留原值要使哪几位保留原值就将与其进行“按位异或”运算的数的相应位置为0。交换两个值,不用临时变量 【例8.7】返回返回8.2.18.2.1目录目录第18页/共45页【例例例例8.68.6】实例实例实例实例 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)返回返回3 3目录目录【例8.6】将01110001的
17、低4 位翻转,高4位保留原值。0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 _ 0 1 1 1 1 1 1 0 (十进制126)程序可写为:#include stdio.hmain()int a=0 x71,b=0 xf,c;c=ab;printf(a=%xnb=%xnc=%xn,a,b,c);运行情况为:a=71b=fc=7e程序演示程序演示第19页/共45页 例例例例8.68.6程序演示程序演示程序演示程序演示输入源程序弹出运行结果窗口返回例题返回例题返回返回3 3目录目录第20页/共45页【例例例例8.78.7】实例实例实例实例 C C C C C C语语语语语语言言言
18、言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环境境境)【例8.7】设有整型数 a=5,b=7。编写程序利用位运算,将a和b的值互换。程序中,通过顺序使用a=ab;b=ba;a=ab;三个赋值语句将两变量a、b的值互换。具体计算过程如下:第一步:a 0000000000000101 b 0000000000000111 a=ab 0000000000000010第二步:a 0000000000000010 b 0000000000000111 b=ba 0000000000000101 (b的值为5)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 位运算学习 运算 学习
限制150内