第12章_位运算

第12章_位运算

ID:20908794

大小:285.00 KB

页数:35页

时间:2018-10-17

第12章_位运算_第1页
第12章_位运算_第2页
第12章_位运算_第3页
第12章_位运算_第4页
第12章_位运算_第5页
资源描述:

《第12章_位运算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十二章位运算6/30/20211主要内容12.1位运算符和位运算12.2位运算举例12.3位段6/30/20212概念位运算是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。例如:将一个存储单元中的各二进制位左移或右移一位,两个数按位相加等。C语言提供位运算的功能,与其他高级语言(如PASCAL)相比,具有很大的优越性。6/30/20213§12.1位运算符和位运算运算符含义运算符含义&按位与~取反

2、按位或<<左移∧按位异或>>右移(1)位运算符中除~以外,均为二目(元)运算符,即要求两侧各有一

3、个运算量。(2)运算量只能是整型或字符型的数据,不能为实型数据。C语言提供的位运算符有:说明:6/30/2021412.1.1“按位与”运算符(&)按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1例:3&5并不等于8,应该是按位与运算:注意:如果参加&运算的是负数(如-3&-5),则要以补码形式表示为二进制数,然后再按位进行“与”运算。00000011(3)&00000101(5)00000001

4、(1)3&5的值得16/30/20215按位与的用途:若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件:原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。(1)清零例:原有数为00101011,另找一个数,设它为10010100,这样在原数为1的位置上,该数的相应位值均为0。将这两个数进行&运算:00101011&10010100000000006/30/20216(2)取一个数中某些指定位如有一个整数a(2个字节),想要取其中的低字节,只需将a

5、与8个1按位与即可。0010110010101100abc000000001111111100000000101011006/30/20217(3)保留一位的方法:与一个数进行&运算,此数在该位取1。即:a=84,b=59c=a&b=16例:有一数01010100,想把其中左面第3、4、5、7、8位保留下来,运算如下:01010100(84)&00111011(59)00010000(16)6/30/2021812.1.2“按位或”运算符(

6、)两个相应的二进制位中只要有一个为1,该位的结果值为1。即0

7、0=0,0

8、

9、1=1,1

10、0=1,1

11、1=1例:060

12、017,将八进制数60与八进制数17进行按位或运算。00110000

13、00001111001111116/30/20219应用:按位或运算常用来对一个数据的某些位定值为1。例如:如果想使一个数a的低4位改为1,只需将a与017进行按位或运算即可。例:a是一个整数(16位), 有表达式:a

14、0377 则低8位全置为1,高8位保留原样。6/30/20211012.1.3“异或”运算符(∧)异或运算符∧也称XOR运算符。它的规则是:若参加运算的两个二进制位同号则结果为0(假)异号

15、则结果为1(真)即:0∧0=0,0∧1=1,1∧0=1,1∧1=0即:071∧052=023(八进制数)00111001∧0010101000010011例:6/30/202111(1)使特定位翻转设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111进行∧运算,即:∧运算符应用:01111010∧0000111101110101运算结果的低4位正好是原数低4位的翻转。可见,要使哪几位翻转就将与其进行∧运算的该几位置为1即可。6/30/202112因为原数中的1与0进行∧运算得1,

16、0∧0得0,故保留原数。例如:012∧00=012(2)与0相∧,保留原值00001010∧00000000000010106/30/202113(3)交换两个值,不用临时变量例如:a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:a=a∧b;b=b∧a;a=a∧b;a=011(∧)b=100a=111(a∧b的结果,a已变成7)(∧)b=100b=011(b∧a的结果,b已变成3)(∧)a=111a=100(a∧b的结果,a已变成4)6/30/202114①执行前两个赋值语句:“a=a∧b;”和“b=b

17、∧a;”相当于b=b∧(a∧b)。②再执行第三个赋值语句:a=a∧b。由于a的值等于(a∧b),b的值等于(b∧a∧b),因此,相当于a=a∧b∧b∧a∧b,即a的值等于a∧a∧b∧b∧b,等于b。a得到b原来的值。即等效于以下两步:6/30/20211512.1.4“取反”运算符(~)~是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,将1变

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。