- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序的设计演示课件位运算
位运算;本章重点;请写出47的二进制形式
;整数的二进制表示;位与字节;位运算符;按位与的用途;例:有一数据b,想测试其第4位是否为1?
分析:
1.位号是从右向左数的
2. 设置一个只有第4位为1的二进制数a与b进行与运 算,如果结果则第4位为1;反之结果则第4位为0。;2、按位或(|) ;3、异或(^) ;(3)与-1异或,相当于将各位取反(因为-1的每个位都为1)。
(-1)
(4)特定位翻转。将需要翻转的位与1异或即可。
^ ;(5)交换两个值,不用临时变量。
例:a=3,b=4,将a和b的值互换,可以用以下赋值语句实现:
a=a^b;b=b^a;a=a^b;
a=011
^ b=100
a=111
^ b=100
b=011
^ a=111
a=100
最后,a=100 (4)
b=011 (3)
实现了交换;;4、取反(~) ;5、左移运算符() ;6、右移运算符() ;检查一下你所用的计算机系统的C编译系统执行的是逻辑右移还是算术右移:
程序代码:
#includestdio.h
void main( )
{
int a=~0,b;
b=a1;
if(b==a)printf(“算术右移!\n”);
else printf(“逻辑右移!\n”);
}
若b仍为~0,则表明采用的是算术右移,反之为逻辑右移。;位运算符功能总结 ;位运算综合运用举例 ;设置一个最低四位均为1而其余位为0的数与之进行按位与运算,能够保留最低四位
0: 0000….00000
~0: 1111…..11111
~04: 1111…..10000 为什么不直接右移?
~(~04):0000…...01111
将(a4)跟(~(~04))进行与运算,便可保留4~7位;例12.2:右循环移位 ;例12.2:右循环移位 ;例12.2:右循环移位 ;例12.2:右循环移位 ;对于无符号整数,总长度N(8 16 32),则可以归纳为:
循环右移n: (an) |(a(N-n))
循环左移n: (an) |(a(N-n))
;用二进制位存储信息:
将动词“看见”的这六种语法属性存入一个字节,则表示如下:
这个字节的值就是2+16+32=50。 ;位 段 ;结构中可以同时定义位段和其他??段。例如,重新定义动词属性结构如下:
struct VerbAttr{
unsigned short Bu_ : 1 ;
unsigned short Mei_ : 1 ;
unsigned short Hen_ : 1 ;
unsigned short _Zhe : 1 ;
unsigned short _Le : 1 ;
unsigned short _Guo : 1 ;
char verb [9] ;
} v;
该结构的理论长度为1*2+1*9=11个字节,但为了对齐,垫补了一个字节,这时v的长度是12个字节。 ;对位段中的数据引用的方法同样可以用成员运算符“.”和指向成员运算符“-”,如
v.Bu_ = 1 ; p-Hen_ = 0;
对位段进行赋值时需要注意其允许的最大值范围,如对结构
struct {
unsigned short a:2;
unsigned short b:3;
unsigned short c:4;
int i;
}data;
写赋值语句 data.a=8 后,位段a 的值为多少?;关于位段的说明 ;关于位段的说明;关于位段的说明;总结: ;思考与练习
文档评论(0)