网站大量收购独家精品文档,联系QQ:2885784924

位移运算符.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
位移运算符

位移运算符 位移运算符 :位运算符 位运算符,用来比较 0101 这样的二进制数,也可以比较boolean 值; : 逻辑运算符,只能比较boolean值,是短路运算符,有“and”之意。 例如: int i = 2 3; boolean l = false true; //: 位运算符 System.out.println(i); System.out.println(l); boolean j = false false; //: 逻辑运算符, 短路运算符, System.out.println(j); 输出: 2 false false 可见, 会计算两边的值,当第一个为false时,就不再计算后面的值,就认为结果是false,因为 就是要找出所有条件都为 true 的条件,所以只要有一个为 false,就为 false。 一、Java中的位操作指定包括: ~ 按位非(NOT) 按位与(AND) | 按位或(OR) ^ 按位异或(XOR) 右移 无符号右移 左移 前面几个都非常简单,主要是移位操作比较容易出错. 首先要搞清楚参与运算的数的位数,如int的是32位。long的是64位。 如int i = 1; i的二进制原码表示为: 00000000000000000000000000000001 long l = 1; l的二进制原码表示为: 0000000000000000000000000000000000000000000000000000000000000001 二、 正数没有反码、补码,也可以说正数的反码、补码跟原码一样。 负数的反码为原码逐位取反, 如int i = -1; 10000000000000000000000000000001,最高位是符号位。正数为0,负数为1。 逐位取反后: 01111111111111111111111111111110即反码。 反码加1: 01111111111111111111111111111111即补码。 负数都是用补码参与运算的。得到的也是补码,需要减1取反获得原码。 三、常用的位运算符--0在位运算中是比较特殊的。 与。 全1为1, 有0为0; 任何数与0异或都等于0。 例: 101010=000,即 52=0. | 或。 有1为1, 全0为0,和 相反。 任何数与0或都等于原值。 例: 101|010=111,即 52=7. ^ 异或。 相同为0,相异为1; 任何数与0异或都等于原值。 例: 101^010=111,即 52=7. 左移。 补0。 右移。 符号位是0补0,是1补1。 无符号右移。补0。 ~ 非 逐位取反 四、负数参与的运算,得到的是补码,需要将补码先减1,然后逐位取反,得到原码。即为运算结果。 0例外,如果得到的是0,则不需减1和取反。 另外,两个正数运算后得到的就是原码,不需减1和取反。 举例: 1^-1, -1 10000000000000000000000000000001--原码 01111111111111111111111111111110--反码 01111111111111111111111111111111--补码 1 00000000000000000000000000000001--原码 则1^-1等于 01111111111111111111111111111111^ 00000000000000000000000000000001= 01111111111111111111111111111110--补码 01111111111111111111111111111101--反码 10000000000000000000000000000010--原码==-2 即1^-1=-2 举例: 1^-2 -2 10000000000000000000000000000010--原码 01111111111111111111111111111101--反码 01111111111111111111111111111110--补码 1 00000000000000000000000000000001--原码 则1^-2等于 01111111111111111111111111111110^ 00000000000000000000000000000001= 01111111111111111111111111111111--补码 011111111111111111111111111111

文档评论(0)

sy78219 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档