java中的左移、右移、无符号右移

简介: 阅读java源码会经常碰到左移与右移运算。那么左移与右移都是怎么运算呢?查询资料学习了下,这里做个总结。

前言:

阅读java源码会经常碰到左移与右移运算。那么左移与右移都是怎么运算呢?查询资料学习了下,这里做个总结。


一.左移 (<<)



直接举个例

20210401230825412.gif


图中测试结果我们可以看到

1<<2=4;

1<<3=8;


是不是发现规律了?没错规律就是左移几位就是乘以2的几次方

一个数左移几位的结果就是,这个数乘以2的几次方的值。


补充说明:


左移无论是正数还是负数计算规则都是一样的,就像上面所说,用官方的话来说就叫:高位向左移动,低位补零。


二.右移(>>)



左移的结果是一个数乘以2的n次方,那右移是一个数除以2的n次方吗?其实不是,这么记是不对的,应该将这个数转化为2进制数,然后将这个数向右移动。这么计算才是准确的(左移右移原理都一样,只是向右移动特殊),符号位不变。

比如2进制的数13,:
0000 0000 0000 0000 0000 0000 0000 1101
对13进行右移2位 :13>>2
0000 0000 0000 0000 0000 0000 0000 0011
所以 13>>2=3;


发现规律了吧,就是将低位右移,高位补零,符号位不变。这就是右移运算的规律。


补充说明:

无论是左移还是右移都不会改变原始数据的符号。但是右移移多了就是0了。右移不可以简单的记忆成除以2的几次方,这么记是不对的。


三.无符号右移(>>>)



已经知道,左移与右移都不会改变数据的正负号,但是无符号右移(>>>)则会。

举个例子看下右移与无符号右移的区别:
13>>>2=3
-13>>>2=1073741820


总结:


正数的无符号右移:与右移规则一致。

负数的无符号右移:这个就有点麻烦了,需要先将负数取反,得到反码,然后反码加1得到补码,补码再进行右移,这样得到的结果就是无符号右移的结果了。


相关文章
|
IDE Java 编译器
Java“找不到符号” 错误怎么查找解决
“找不到符号”是Java编程中常见的编译错误,通常表明代码试图访问未声明或不可见的符号(如类、方法或变量)。解决此问题需检查拼写、导入包是否正确及作用域是否合适。确保使用正确的类路径和库,可有效避免此类错误。若问题依旧,查阅官方文档或使用调试工具定位错误亦为良策。
6892 10
|
IDE Java 编译器
lombok编译遇到“找不到符号的问题”
【9月更文挑战第18天】当使用 Lombok 遇到 “找不到符号” 的问题时,可能是由于 Lombok 未正确安装、编译器不支持、IDE 配置不当或项目构建工具配置错误。解决方法包括确认 Lombok 安装、编译器支持,配置 IDE 和检查构建工具配置。通过这些步骤通常可解决问题,若问题仍存在,建议检查项目配置和依赖,或查看日志获取更多信息。
5781 2
成功解决:java: 找不到符号 符号: 方法 getSort() 位置: 类型为com.atguigu.gulimall.product.entity.CategoryEntity的变量 menu1
这篇文章讨论了Java中遇到的一个常见错误:"java: 找不到符号 符号: 方法 getSort() 位置: 类型为com.atguigu.gulimall.product.entity.CategoryEntity的变量 menu1",即在尝试调用一个不存在的方法时出现的问题,并提供了相应的解决方法。
java:找不到符号
这篇文章讨论了Java编程中常见的错误信息 "找不到符号:类 entity",并提供了解决这个问题的一些方法和建议。
Java中的左移运算符及其在实现加法效果上的应用
Java中的左移运算符及其在实现加法效果上的应用
138 0
JAVA工具类匹配重复或者连续的字符和符号
JAVA工具类匹配重复或者连续的字符和符号
167 2
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
203 1
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
230 1
|
4月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
183 0