全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java<<、>>、>>>移位操作方法

<<,有符号左移位,将运算数的二进制整体左移指定位数,低位用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小时内与您取得联系。