首页 / JAVA / Javase学习10-位运算符
Javase学习10-位运算符
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javase学习10-位运算符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2199字,纯文字阅读大概需要4分钟。
内容图文
位运算符本质都是针对二进制数0和1进行运算的,在使用位运算符时,会先将操作数转换成二进制进行位运算,再将结果转换成想要的进制数。1表示true,0表示false
须知:
-
负数在内存中是以补码的形式存储的
-
负数的二进制数就是该负数对应正数的源码全部取反加1得到的补码
-
源码: 00011110
-
反码: 11100001
-
补码: 11100010
-
-
负数的源码就是补码除符号位外全部取反加1
-
补码:11110011
-
反码:10001100
-
源码:10001101
-
一、位运算符分类
运算符 | 运算 | 例子 | 运算过程 |
---|---|---|---|
& | 位与 | a & b | a和b每一位进行"与"操作,相同的为1,不同的为0 |
| | 位或 | a | b | a和b每一位进行"与"操作,只有a与b之间有一个1就为1 |
~ | 位取反 | ~a | 将a每一位进行"非"操作,所有位数字取反 |
^ | 位异或 | a ^ b | a和b每一位进行"异或"操作,相同的为0,不同的为1 |
<< | 左移 | a << b | 将a左移b位,右边空位用0填充 |
>> | 右移 | a >> b | 将a右移b位,丢弃被移出位,左边最高位为1空位就填充1,为0就填充0 |
>>> | 无符号右移 | a >>> b | 将a右移b位,丢弃被移出位,左边空位用0填充 |
二、实例:
1. &:位与
将a和b的每一位都进行“与”操作,相同的为1,不同的为0
byte a = 2; byte b = 3; /** * a转换成二进制:00000010 2 * b转换成二进制:00000011 3 * ---------------------------- * 位与运算结果: 00000010 2 */ System.out.println(a & b);
2. |:位或
a和b每一位进行"与"操作,只要a与b之间有一个1就为1
byte a = 2; byte b = 3; /** * a转换成二进制: 00000010 2 * b转换成二进制: 00000011 3 * ---------------------------- * 按位或运算结果: 00000011 3 */ System.out.println(a | b);
3. ~:取反
将a每一位进行"非"操作,所有位数字取反
byte a = 2; /** * a转换成二进制: 00000010 2 * ---------------------------- * 按位取反运算结果: 11111101(补码) -3 */ System.out.println(~ a);
4. ^:位异或
a和b每一位进行"异或"操作,相同的为0,不同的为1
byte a = 2; byte b = 3; /** * a转换成二进制: 00000010 2 * b转换成二进制: 00000011 3 * ---------------------------- * 按位异或运算结果: 00000001 1 */ System.out.println(a ^ b);
5. <<:左移
将a左移b位,右边空位用0填充
byte a = 2; byte b = 3; /** * a转换成二进制: 00000010 2 * ---------------------------- * a左移3位后运算结果: 00010000 16 */ System.out.println(a << b);
6. >>:右移
将a右移b位,丢弃被移出位,左边最高位为1空位就填充1,为0就填充0
byte a = 98; /** * a转换成二进制: 01100010 98 * ---------------------------- * a右移2位后运算结果: 00011000 24 */ System.out.println(a >> 2); byte b = -30; /** * b转换成二进制: 11100010(补码) -30 * ---------------------------- * b右移2位后运算结果: 11111000 -8 */ System.out.println(b >> 2);
7. >>>:无符号右移
将a右移b位,丢弃被移出位,左边空位都用0填充
byte a = 98; /** * a转换成二进制: 01100010 98 * ---------------------------- * a右移2位后运算结果: 00011000 24 */ System.out.println(a >>> 2); byte b = -30; /** * b转换成二进制: 11100010(补码) -30 * ---------------------------- * b右移2位后运算结果: 00111000 56 */ System.out.println(b >>> 2);
原文:https://www.cnblogs.com/TSCCG/p/14790089.html
内容总结
以上是互联网集市为您收集整理的Javase学习10-位运算符全部内容,希望文章能够帮你解决Javase学习10-位运算符所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。