<<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。
int leftShift = 10;
System.out.println("十进制:" + leftShift + ", 二进制:" + Integer.toBinaryString(leftShift));
int newLeftShift = letfShift << 2;
System.out.println("左移2位后十进制:" + newLeftShift + ", 左移2位后二进制" + Integer.toBinaryString(newLeftShift)); //正整数x左移n位后的十进制结果,x = x * 2^n
以上是正整数,运算结果如下。
接下来看看将负数进行左移2位操作是什么情况,运算结果如下。
为什么会-10的二进制会出现这么多的1呢?仔细数一下刚好有32位。首先需要了解的是Java负数存储是以补码形式存储的(补码=反码+1),10的二进制是1010,它的反码就是0101,再加1就是补码0110。那为什么会多出来那么多1呢?这是因为int型在Java中占8个字节,刚好32位,10原码的高位全是0,它的反码自然高位就变成了1。所以整体左移2位,低位以0补齐,最后的运算结果就是x = (|x| + 2^n)。
>>,有符号右移位,将运算数的二进制整体右移指定位数,整数高位用0补齐,负数高位用1补齐(保持负数符号不变)。
int rightShift = 10;
System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift));
int newRightShift = rightShift >> 2;
System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift)); //右移n位后的运算数x十进制结果,x = x / 2
以上是正整数,运算结果如下。
接下来看看将负数进行右移2位操作是什么情况,运算结果如下。
负数的有符号右移基本原理还是和左移相同,不同的是结果的计算,因为这是有符号的右移,一直右移最后的结果就会是-1。归纳起来就是,如果运算数是偶数,那么它的运算结果就是 x = -(|x| / 2),如果运算数是奇数,那么它的运算结果就是 x = -(|x| / 2) - 1。
>>>,无符号右移位,不管正数还是负数,高位都用0补齐(忽略符号位)
先看正数,正数的>>>无符号右移位和>>有符号右移位计算结果相同
int rightShift = 10;
System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift));
int newRightShift = rightShift >>> 2;
System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift)); //右移n位后的云算数x十进制结果,x = x / 2
以上是正整数,运算结果如下。
接下来看负整数,运算结果如下。
虽然无符号移位后的二进制和有符号移位后的二进制看起来相同的,但结果大相径庭,记住有符号右移位操作,实际上是忽略符号的算术操作,即高位统一补0。
以上这篇java<<、>>、>>>移位操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# java
# 移位
# Java移位运算符详解实例(小结)
# 浅析java移位符的具体使用
# Java利用移位运算将int型分解成四个byte型的方法
# java基于移位操作实现二进制处理的方法示例
# java中关于移位运算符的demo与总结(推荐)
# Java中的位运算符、移位运算详细介绍
# java中的移位运算符心得总结
# Java中位运算(移位、位与、或、异或、非) 的简单实例
# Java三种移位运算符原理解析
# 补齐
# 的是
# 正整数
# 给大家
# 来看看
# 这是
# 就会
# 那么多
# 这么多
# 希望能
# 大相径庭
# 这篇
# 都用
# 这是因为
# 再加
# 多出
# 小编
# 先看
# 大家多多
# 基本原理
相关文章:
公司门户网站制作流程,华为官网怎么做?
网站制作新手教程,新手建设一个网站需要注意些什么?
建站168自助建站系统:快速模板定制与SEO优化指南
定制建站流程解析:需求评估与SEO优化功能开发指南
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
建站主机选哪家性价比最高?
如何快速辨别茅台真假?关键步骤解析
建站主机数据库如何配置才能提升网站性能?
如何在IIS中配置站点IP、端口及主机头?
中山网站制作网页,中山新生登记系统登记流程?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何基于PHP生成高效IDC网络公司建站源码?
网站制作难吗安全吗,做一个网站需要多久时间?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
ui设计制作网站有哪些,手机UI设计网址吗?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
魔毅自助建站系统:模板定制与SEO优化一键生成指南
网站制作软件免费下载安装,有哪些免费下载的软件网站?
网站制作需要会哪些技术,建立一个网站要花费多少?
如何选择高效可靠的多用户建站源码资源?
黑客入侵网站服务器的常见手法有哪些?
如何将凡科建站内容保存为本地文件?
如何自定义建站之星网站的导航菜单样式?
无锡营销型网站制作公司,无锡网选车牌流程?
为什么Go需要go mod文件_Go go mod文件作用说明
西安大型网站制作公司,西安招聘网站最好的是哪个?
建站主机空间推荐 高性价比配置与快速部署方案解析
如何通过虚拟主机空间快速建站?
网站制作企业,网站的banner和导航栏是指什么?
如何通过宝塔面板实现本地网站访问?
如何高效搭建专业期货交易平台网站?
如何获取PHP WAP自助建站系统源码?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
PHP正则匹配日期和时间(时间戳转换)的实例代码
建站之星备案流程有哪些注意事项?
如何打造高效商业网站?建站目的决定转化率
如何选择靠谱的建站公司加盟品牌?
郑州企业网站制作公司,郑州招聘网站有哪些?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
Python如何创建带属性的XML节点
如何快速查询域名建站关键信息?
如何高效利用亚马逊云主机搭建企业网站?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
建站之星安装提示数据库无法连接如何解决?
*请认真填写需求信息,我们会在24小时内与您取得联系。