- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计教程_第10章
C语言程序设计教程;第10章 位运算;主要内容;学习目标;10.1 位运算的概念 ;2.原码、反码和补码
(1)原码。最高位为符号位(0为正,1为负),其余各位表示大小。
例如:
+9的原码:因为最高位为0,表示正数,其他各位加起来为:1*23+1*20=9。
-9的原码就为:除了最高位与+9不同,其他位都相同。
再例如:
+0的原码: -0的原码:由0的表示法可以看出,0在内存中的表示不惟一,所以不适合计算机进行计算。 ;(2)反码。反码的表示方法如下:
正数的反码与原码相同。
负数的反码为:与原码相比,符号位不变,其余各位取反。
例如:
+9的反码-9的反码+0的反码-0的反码从这里可以看出,在反码中,0在内存中的表示仍不为1,所以反码也不适合计算机的计算。;(3)补码。计算机是以补码形式存放数的,它表示方法如下:
正数的补码与原码相同。
负数的补码为:最高位为1 ,其余各位与原码的相应位按位取反,然后加1。
+9的补码为-9的补码求解过程:
原码按位取反加1所以-9的补码就
+0的补码为-0的补码为:
原码反码补码最高位进的1舍去)
可以看出,+0和-0都是同样的表示方法,所以计算机以补码形式存放数据。 ;10.1.2 位运算的概念与种类 ;10.2 位运算的使用 ;10.2.2 按位或运算符
按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进制位相或。只要对应的两个二进制位有一个为1时,结果位就为1。
例如,求9|10:
|所以9|10的结果为11。
;10.2.3 按位异或运算符
按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进制位相异或,当两对应的二进制位相异时,结果为1。即:
1^1=0,0^0=0,1^0=1,0^1=1
注意,这里不是表达式,只是表示每两个二进制位相异或的结果。
例如,9^10为:
^所以9^10=3。
异或运算可以用于翻转某位的值,如果想翻转变量中的某一位,就使该变量与该位置为1,其余位置为0的数进行异或运算。 ;10.2.4 取反运算符
求反运算符“~”为单目运算符,具有右结合性。其功能是对参与运算的数的各二进制位按位求反。
例如:
^9为:
^补码其原码经过计算所以结果为-10。 ;a= 0 0 0 0 1 0 0 1
a2= 0 0 | 0 0 1 0 0 1 | 0 0
;10.2.6 右移运算符 ;2.对有符号数
对带符号数的int型或char型数据,如果符号位为0(即正数),则左边也补入0;如果符号位是1(为负数),则左边全部补入1。
例如:-1192的运算过程。
文档评论(0)