补充位运算符和位运算表达式_第1页
补充位运算符和位运算表达式_第2页
补充位运算符和位运算表达式_第3页
补充位运算符和位运算表达式_第4页
补充位运算符和位运算表达式_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、补充 位运算符及位运算1按位与& (1)格式:x&y (2)规则:对应位均为1时才为1,否则为0。例如,3&9=1: 0011 & 1001 0001=(1)10 (3)主要用途: 清零。如5&0=0 取(或保留)一个数的某(些)指定位。构造一个数与之按位与,将要取的位置1,其余位置0。 2按位或| (1)格式:x|y (2)规则:对应位均为0时才为0,否则为1。例如,3|9=11: 0011 | 1001 1011=(11)10 (3)主要用途: 将一个数的某(些)位置1,其余各位不变。构造一个数与之按位或,将要置1的位置1,其余位置0。 3按位异或

2、(1)格式:xy (2)规则:对应位相同时为0,不同时为1:如:39=10。 (3)主要用途: 使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变。可构造一个数与之按位异或,将要翻转的位置1,不翻转的位为0。 与0相异或,保留原值。 交换两个数的值,不用临时变量。如: a=ab; b=ba; a=ab;4按位取反(单目运算符) (1)格式:x (2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1 (3)主要用途:间接地构造一个数,以增强程序的可移植性。 如:要构造一个全1的数,可用0表示。5按位左移 (1)格式:x 位数 (2)规则:使操作数的各位左移,低位

3、补0,高位溢出。如:5 (1)格式:x位数 (2)规则:使操作数的各位右移,移出的低位舍弃;高位: 1)对无符号数和有符号中的正数,补0; 2)有符号数中的负数,取决于所使用的系统:补0的称为“逻辑右移”,补1的称为“算术右移”。在Turbo C 中采用的是“算术右移”,即对有符号数按位右移时,左补符号位。 例如,20 2=5。 (3)结论:对正数和无符号数,右移1位相当于除以2,右移n位相当于除以2n。7. 位运算符的优先级顺序(从高到低): 、()、&、| 8. 复合赋值运算符 除按位取反运算外,其余5个位运算符均可与赋值运算符一起,构成复合赋值运算符: &=、|=、=、=

4、9. 不同长度数据间的位运算低字节对齐,短数的高字节按最高位补位: (1)对无符号数和有符号中的正数,补0; (2)有符号数中的负数,补1。说明: (1)前述格式中的x、y和“位数”等操作数,都只能是整型或字符型数据。除按位取反为单目运算符外,其余均为双目运算符。 (2)参与运算时,操作数x和y,都必须首先转换成二进制形式,然后再执行相应的按位运算。例如,5 2=5:10100 00101位运算举例例1 从键盘上输入一个正整数给int型变量num,输出由811位构成的数(从低位、0号开始编号)。基本思路: (1) 使变量num右移8位,将811位移到低4位上。 (2) 构造1个低4位为1、其余各位为0的整数。 (3) 与num进行按位与运算。程序功能:输出一个整数中由811位构成的数main() int num, mask; printf(“Input a integer number: ”); scanf(“%d ” ,&num); num = 8; /*右移8位,将811位移到低4位上*/ mask = ( 0 4); /*间接构造1个低4位为1、其余各位为0的整数*/ printf(“result=0 x%xn ” , num & mask); 程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论