版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1010章章 位运算位运算 掌握基本位运算的形式掌握基本位运算的形式 掌握位运算的一般性计算方法掌握位运算的一般性计算方法 10.1 位、字节与编码位、字节与编码 【问题】我们知道任何信息在计算机中都是以二进【问题】我们知道任何信息在计算机中都是以二进制形式表示,而我们日常生活中使用的是十进制,制形式表示,而我们日常生活中使用的是十进制,由于位运算是指进行二进制位的运算,因此在学习由于位运算是指进行二进制位的运算,因此在学习位运算之前我们有必要了解与回顾一下计算机内数位运算之前我们有必要了解与回顾一下计算机内数据组织与存储形式。据组织与存储形式。10.1.1 字节与位字节与位 字节字节(b
2、ytebyte)是计算机中的存储单元。一个字节可以存)是计算机中的存储单元。一个字节可以存放一个英文字母或符号,一个汉字通常要用两个字节来放一个英文字母或符号,一个汉字通常要用两个字节来存储。每一个字节都有自己的编号,叫做存储。每一个字节都有自己的编号,叫做“地址地址”。1 1个个字节由字节由8 8个二进制位(位的英文是个二进制位(位的英文是bitbit)构成,每位的取)构成,每位的取值为值为0 0或或1 1。最右端的那。最右端的那1 1位称为位称为“最低位最低位”,编号为,编号为0 0;最左端的那最左端的那1 1位称为位称为“最高位最高位”,而且从最低位到最高位,而且从最低位到最高位顺序,依
3、次编号。顺序,依次编号。10.1.1 字节与位字节与位 我们把若干字节组成一个单元,叫做我们把若干字节组成一个单元,叫做“字字”(wordword)。一个字可以存放一个数据或指令。至于)。一个字可以存放一个数据或指令。至于一个字由几个字节组成,取决于计算机的硬件系统。一个字由几个字节组成,取决于计算机的硬件系统。一般由一般由1 1个、个、2 2个或个或4 4个字节组成,所对应的计算机个字节组成,所对应的计算机也被称为也被称为“8 8位机、位机、1616位机或位机或3232位机位机”。目前微机。目前微机以以1616位机或位机或3232位机为主。在本书中作为原理讲述的位机为主。在本书中作为原理讲述
4、的是是8 8位机。位机。10.1.2 原码原码 把最高位留做表示符号,其他把最高位留做表示符号,其他7 7位表示二进制数,位表示二进制数,这种编码方式叫做这种编码方式叫做原码原码。最高位为。最高位为“0”0”表示正数,表示正数,为为“1”1”表示负数。例如:表示负数。例如: 0000001100000011表示表示 +3+3 1000001110000011表示表示 - 3- 3 显然,这样可以表示的数值范围在显然,这样可以表示的数值范围在+127+127到到-127-127之之间。间。 这种表示方法有一个缺陷,数值这种表示方法有一个缺陷,数值0 0会出现歧义:会出现歧义: 000000000
5、0000000表示表示 +0+0 1000000010000000表示表示 - 0- 010.1.3 反码反码 对于正数,反码与原码相同。例如:对于正数,反码与原码相同。例如: 0000001100000011表示表示 +3+3。 所谓所谓“反码反码”是指与是指与“原码原码”在表示负数时相反:在表示负数时相反:符号位(最高位)为符号位(最高位)为“1”1”表示负数。但其余位的值相表示负数。但其余位的值相反。例如,反。例如,1111110011111100表示表示-3-3。显然,这样可以表示的数。显然,这样可以表示的数值范围在值范围在+127+127到到-127-127之间。之间。 这种表示方法
6、仍然有一个缺陷,数值这种表示方法仍然有一个缺陷,数值0 0会出现歧义:会出现歧义: 0000000000000000表示表示 +0+0 1111111111111111表示表示 - 0- 010.1.4 补码补码 对于对于正数正数,补码与原码相同。,补码与原码相同。 0 0的补码为的补码为0000000000000000。这样,。这样,0 0的表示唯一。的表示唯一。 对于对于负数负数,可以从原码得到补码。步骤如下:,可以从原码得到补码。步骤如下: 符号位不变符号位不变, ,其余各位取反;其余各位取反; 整个数加整个数加1 1。 已知补码,求原码:已知补码,求原码: 符号位不变符号位不变, ,其
7、余各位取反其余各位取反 整个数加整个数加1 1。10.1.4 补码补码 例如,已知补码为例如,已知补码为1111100111111001,求原码。,求原码。 符号位为符号位为“1”1”,表示是一个负数,所以该位不,表示是一个负数,所以该位不变,仍为变,仍为“1”1”; 其余其余7 7位位11110011111001取反后为取反后为00001100000110;再加;再加1 1,所以,所以是是1000011110000111(-7)(-7)。 计算机中的数据都采用补码。原因是计算机中的数据都采用补码。原因是: : 使用补码,可以将符号位和其它位统一处理;同使用补码,可以将符号位和其它位统一处理;
8、同时,减法也可按加法来处理。如时,减法也可按加法来处理。如-3+4-3+4可以变成可以变成-3-3的补码与的补码与+4+4的补码相加的补码相加 两个用补码表示的数相加时,如果最高位(符号两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。位)有进位,则进位被舍弃。 10.2 位运算符和位运算位运算符和位运算 位运算表位运算表10.2.1 按位取反按位取反 【运算符】【运算符】 【格式】【格式】xx【功能】各位翻转,即原来为【功能】各位翻转,即原来为1 1的位变成的位变成0 0,原来为,原来为0 0的位变成的位变成1 1。【主要用途】间接地构造一个数,以增强程序的可【主要用途】间
9、接地构造一个数,以增强程序的可移植性。移植性。【示例】如【示例】如x=83x=83,y=xy=x,则,则y=172y=172。83(01010011) 83(01010011) 172(10101100) 10.2.2 按位与按位与 【运算符【运算符】& &【格式【格式】x&yx&y【功能】当两个操作对象二进制数的相同位都为【功能】当两个操作对象二进制数的相同位都为1 1时,结果数时,结果数值的相应位为值的相应位为1 1,否则为相应位是,否则为相应位是0 0。【主要用途】取【主要用途】取( (或保留或保留)1)1个数的某个数的某( (些些) )位,其余各位置位,
10、其余各位置0 0。【示例】如【示例】如x=146x=146,y=222y=222,z=x&yz=x&y,则,则z=146z=146。10.2.3 按位或按位或 【运算符【运算符】| |【格式【格式】x | yx | y【功能】当两个操作对象二进制数的相同位都为【功能】当两个操作对象二进制数的相同位都为0 0时,结果数时,结果数值的相应位为值的相应位为0 0,否则为相应位是,否则为相应位是1 1。【主要用途】将【主要用途】将1 1个数的某个数的某( (些些) )位置位置1 1,其余各位不变。,其余各位不变。【示例】如【示例】如x=146x=146,y=222y=222,z=x |
11、 yz=x | y,则,则z=222z=222。10.2.4 按位异或按位异或 【运算符【运算符】 【格式【格式】x yx y【功能】当两个操作对象二进制数的相同位的值相同时,结果【功能】当两个操作对象二进制数的相同位的值相同时,结果数值的相应位为数值的相应位为0 0,否则为相应位是,否则为相应位是1 1。【主要用途】使【主要用途】使1 1个数的某个数的某( (些些) )位翻转位翻转( (即原来为即原来为1 1的位变为的位变为0 0,为为0 0的变为的变为1)1),其余各位不变。,其余各位不变。【示例】如【示例】如x=146x=146,y=222y=222,z=x yz=x y,则,则z=76
12、z=76 10.2.5 左位移左位移 【运算符【运算符】 【格式】【格式】x要位移的位数要位移的位数【功能】把操作对象的二进制数向左移动指定【功能】把操作对象的二进制数向左移动指定的位,并在右面补上相应的的位,并在右面补上相应的0,高位溢出。,高位溢出。【示例】如【示例】如x=01010011,y=x 【格式】【格式】x要位移的位数要位移的位数【功能】把操作对象的二进制数向右移动指定的位【功能】把操作对象的二进制数向右移动指定的位,移出的低位舍弃;高位:,移出的低位舍弃;高位:(1) 对无符号数和有符号中的正数,补对无符号数和有符号中的正数,补0;(2) 有符号数中的负数,取决于所使用的系统:
13、补有符号数中的负数,取决于所使用的系统:补0的称为的称为“逻辑右移逻辑右移”,补,补1的称为的称为“算术右移算术右移”。【示例】如【示例】如x=01010011,y=x2,则则y=00010100【注意】右移会引起数据的变化,具体说,右移一【注意】右移会引起数据的变化,具体说,右移一位相当于对原来的数值除以位相当于对原来的数值除以2。右移。右移n位相当于对原位相当于对原来的数值除以来的数值除以2 n说 明x x、y y和和“位数位数”等操作数,都只能是整型或字符型数据。除按位等操作数,都只能是整型或字符型数据。除按位取反为单目运算符外,其余均为双目运算符。取反为单目运算符外,其余均为双目运算符
14、。参与运算时,操作数参与运算时,操作数x x和和y y都必须首先转换成二进制形式,然后再都必须首先转换成二进制形式,然后再执行相应的按位运算。例如:执行相应的按位运算。例如: 52522020即即1011011022025 5即即1010010100101000101 00101 。 复合赋值运算符复合赋值运算符 除按位取反运算外除按位取反运算外, ,其余其余5 5个位运算符均可与赋值运算符个位运算符均可与赋值运算符一起一起, ,构成复合赋值运算符构成复合赋值运算符: &=: &=、|+|+、=、=。例如,例如,a & = ba & = b相当于相当于 a =
15、a & ba = a & b。a =2a =2相当于:相当于:a a = a 2= a 2。不同长度数据间的位运算不同长度数据间的位运算低字节对齐,短数的高字节按最高低字节对齐,短数的高字节按最高位补位:位补位: 对无符号数和有符号中的正数,补对无符号数和有符号中的正数,补0 0; 有符号数中的负数,补有符号数中的负数,补1 1。 10.3 程序举例程序举例 【例【例10-110-1】取一个整数】取一个整数a a从右端开始的从右端开始的4 47 7位。位。 #include void main()unsigned a,b,c,d; scanf(%o,&a); b=a4;
16、c=(04); d=b&c; printf(%o,%dn%o, %dn,a,a,d,d);【例【例10-2】从键盘上输入一个正整数给】从键盘上输入一个正整数给int变量变量num,按二进制位输出该数。,按二进制位输出该数。 #include “stdio.h#include “stdio.h“void main()void main() int int num, mask, i; num, mask, i; printf(”Input a integer number:”); printf(”Input a integer number:”); scanf(“%d”,&num)
17、; scanf(“%d”,&num); mask = 115; mask = 115; printf(“%d=” , num); printf(“%d=” , num); for(i for(i=1; i=16; i+)=1; i=16; i+) putchar(num&mask ? 1: 0); putchar(num&mask ? 1: 0); num = 1; num = 1; if( i%4=0 ) putchar(,); if( i%4=0 ) putchar(,); printf(bBn printf(bBn);); 说明:说明:115115相当于:相当于:
18、0000 0000 00000000 0000 0000 0001 0001 左移左移1515位后为:位后为:1000 0000 0000 00001000 0000 0000 0000num&masknum&mask ? 1: 0 ? 1: 0的意思如图的意思如图 本章介绍的位运算在系统软件开发与计算机用于检测和控制本章介绍的位运算在系统软件开发与计算机用于检测和控制领域中有重要应用,也是领域中有重要应用,也是C C语言的特色之一。重点要求读者语言的特色之一。重点要求读者掌握位运算符及其应用。掌握位运算符及其应用。 学好本章必须了解计算机内数据的组织与存储形式,二进制学好本章必须了解计算机内数据的组织与存储形式,二进制的原理是关键。的原
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代短诗远和近
- 石河子大学《葡萄酒市场学》2022-2023学年第一学期期末试卷
- 肿瘤患者的饮食营养护理
- 2024高考政治一轮复习第四单元认识社会与价值选择第十二课实现人生的价值课时作业含解析必修4
- 2024年武汉申请客运从业资格证理论考试题
- 煤矿事故隐患排查治理管理制度
- 第二单元基础复习(知识梳理+检测)-2022-2023学年四年级语文下册 部编版
- 规划课题申报范例:双减政策下音乐课程与社团一体化的研究(附可修改技术路线图)
- 副校长开学的讲话稿(5篇)
- 道路桥梁材料招投标文件
- 腹腔镜子宫内人工授精技术在羊临床中的应用
- 鲁迅笔下的“看客”形象
- 消防管道支架工程量计算表
- 企业外包业务安全生产专项检查表(全面)1管理学资料
- 《咕咚来了》课件PPT
- 05-SMT-DOE实验结案报告
- 输尿管结石护理查房课件
- 西学中试题答案在后(已排版)
- 皮肤牵引护理技术操作流程及评分标准
- 医患沟通特殊问题处理课件
- 小学数学说课课件
评论
0/150
提交评论