无符号右移-1?关于Java位移,多数人不知道的

简介: 之前看java源码的时候,看到有一个语句,整型无符号右移一个负数(如1024>>-22),当时惊呼:“还有这种操作,老师没教过啊”,老师确实没教过!当时网上查了一下,发现:对于int类型,移位操作只关注移位参数转换成二进制后对应的后5位(bit);long则只关注后6位。

之前看java源码的时候,看到有一个语句,整型无符号右移一个负数(如1024>>-22),当时惊呼:“还有这种操作,老师没教过啊”,老师确实没教过!
当时网上查了一下,发现:对于int类型,移位操作只关注移位参数转换成二进制后对应的后5位(bit);long则只关注后6位
举个栗子:

System.out.println(1024 >>> 10 == 1024 >>> 42);// true
System.out.println(1024 >>> 10 == 1024 >>> -22);// true

其中,10转换成二进制后是1010,42转换成二进制后是10101,-22转换成二进制后是11111111111111111111111111101010,所有的都是最后5个bit是01010,所以无符号右移之后都相等。
印象中应该不少书都没讲解到这个知识点,上大学的时候,老师更加没提过这个。

目录
相关文章
|
5天前
|
Java
java:找不到符号
这篇文章讨论了Java编程中常见的错误信息 "找不到符号:类 entity",并提供了解决这个问题的一些方法和建议。
|
1天前
|
Java
成功解决:java: 找不到符号 符号: 方法 getSort() 位置: 类型为com.atguigu.gulimall.product.entity.CategoryEntity的变量 menu1
这篇文章讨论了Java中遇到的一个常见错误:"java: 找不到符号 符号: 方法 getSort() 位置: 类型为com.atguigu.gulimall.product.entity.CategoryEntity的变量 menu1",即在尝试调用一个不存在的方法时出现的问题,并提供了相应的解决方法。
|
2月前
|
Java
JAVA工具类匹配重复或者连续的字符和符号
JAVA工具类匹配重复或者连续的字符和符号
24 2
|
2月前
|
Java
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
27 3
|
2月前
|
算法 Java
Java数据结构与算法:位运算之位移操作
Java数据结构与算法:位运算之位移操作
|
3月前
|
Java Kotlin
java调用kotlin代码编译报错“找不到符号”的问题
java调用kotlin代码编译报错“找不到符号”的问题
153 10
|
3月前
|
Java
java判断字符串中有多少数字字母或者符号
java判断字符串中有多少数字字母或者符号
|
9月前
|
XML Java 数据格式
Java解析xml文件遇到特殊符号&会出现异常的解决方案
XML当中特殊符号包括< > & ' "等,它们是不允许作为xml文件的PCDATA,若想使用话,需用转义符代替
155 0
|
10月前
|
Java
【MapStruct】引入MapStruct之后,项目启动java:找不到符号
【MapStruct】引入MapStruct之后,项目启动java:找不到符号
125 0