欢迎来到天天文库
浏览记录
ID:49908913
大小:905.00 KB
页数:36页
时间:2020-03-04
《C语言设计教程第11章 位运算.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章位运算内容简介在前面内容中已经学习了算术运算符、关系运算符、赋值运算符、逻辑运算符、条件运算符、逗号运算符等等,在C语言中除了介绍以上的运算符外,还有位运算符。位运算符很适合于编写系统软件的需要,也是C语言的重要特色之一,这使得C语言也能像汇编语言一样用来编写系统程序。内容简介所谓位运算是指进行二进制位的运算,在系统软件中,我们常要处理二进制位的问题。比如,将一个存储单元中的各个二进制位左移一位或者右移一位,两个数按位相加等等。第1节位运算与位运算符位运算主要是对字节或字节内部的二进制位进行测试、设置、逻辑或者移位的运算,主要有六种位运算符,且分成两类,一类为位
2、逻辑运算,另一类为移位运算。六种运算符如下:&按位与
3、按位或^按位异或~取反<<左移>>右移第1节位运算与位运算符1、按位与运算符(&)运算规则:如果两个相应的二进制位都为1,则相与后值为1,否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1例如:a=6,b=7,c=a&b,计算c的值。00000110&00000111结果为:00000110按位与可用于一些特殊的场合。(1)可以对某位清零。只需将所需要清零的对应位与0进行按位与运算就可以完成对某些位的清零操作。(2)保留某些位。只需要将所需要保留的对应位与1进行按位与运算就可以完成对某些位的保留操作。第1节
4、位运算与位运算符2、按位或运算符(
5、)运算规则:如果两个相应的二进制位都为0,则相或后值为0,否则为1。即:0
6、0=0,0
7、1=1,1
8、0=1,1
9、1=1例如:a=6,b=7,c=a
10、b,计算c的值。00000110
11、00000111结果为:00000111由此可见,按位或运算的主要用途是对某位进行置1操作。例如:需将一个数的低四位全改为1,只需要将这个数与十进制数据15进行按位或运算即可。00110000
12、00001111结果为:00111111第1节位运算与位运算符3、按位异或运算(^)运算规则:如果两个相应的二进制位相同,则异或后值为0,否则为1。即:0^0=0,
13、0^1=1,1^0=1,1^1=0例如:a=6,b=7,c=a^b,计算c的值。00000110^00001110结果为:00001000按位异或可用于一些特殊的场合。(1)与0相异或,保留原值。(2)交换两个值,不用临时变量(3)使特定位取反第1节位运算与位运算符4、按位取反运算(~)运算规则:按位取反是一个单目运算符,用来对二进制位进行取反运算。如果二进制位为0,则结果为1;如果二进制位为1,则结果为0。也就是说:~0=1,~1=0。例如:a=6,b=~a,将a按位取反后其值赋给b。00000110~结果为:11111000第1节位运算与位运算符5、左移位运算符(<
14、<)格式为:x=x<>)格式为:x=x>>n
15、运算规则:将一个数值x的各个二进制位全部右移n位。其中x是运算对象(操作数),可以是一个字符型或者整型的变量或者表达式;n是待移位的位数,必须是整数。右移位的过程中,各个二进制位顺序向右移动。对于无符号数进行右移时,左端空出的位补0,右端移出的位则被舍弃。对于用补码形式表示的有符号数进行右移时,如果原来符号位为0(正数),则左边也是补0,右端移出的位则被舍弃;如果原来符号位为1(负数),则要取决于所用的计算机系统。有的系统补0,有的系统补1,补0的称为“逻辑右移”,补1的称为“算术右移”。例如:x=8,将x>>2。x=x>>2,x的二进制形式为00001000,各个二进
16、制位右移2位后变为00000010,即x=2。由此可以看出,右移1位,相当于该数除以2,右移2位相当于该数除以2*2=4,左移n位相当于该数除以2的n次方。第1节位运算与位运算符7、几点说明:(1)位运算符中除~以外,其它均为二目运算符,也就是要求运算符两侧各有一个运算对象(或称为运算量)。(2)位运算的运算对象(运算量)只能是整型或字符型的数据,不能为实型数据或其它类型的数据。(3)前四种运算符可以称为位逻辑运算符,其运算规则与逻辑运算(&&、
17、
18、、!)运算规则一样,也可以用真值表表示。设a、b分别表示一个二进制位,则按位逻辑运算的真值
此文档下载收益归作者所有