<

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、、移位操作方法相关推荐

  1. java右移位_java 、移位操作方法

    < java" id="highlighter_505373"> 以上是正整数,运算结果如下. 接下来看看将负数进行左移2位操作是什么情况,运算结果如下. 为 ...

  2. java右移位_java移位运算符详解

    java 移位运算符不外乎就这三种: << (左移). >> (带符 号右移)和 >>> (无符号右移) 1 . 左移运算符 左移运算符 << 使 ...

  3. java右移位_java中的移位运算符:,,总结

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  4. java右移位_java中的左移 右移

    1. 左移运算符 左移运算符< 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果 ...

  5. java set 包含_Java Set.contains()方法:判断Set集合是否包含指定的对象

    Java 集合类中的 Set.contains() 方法判断 Set 集合是否包含指定的对象.该方法返回值为 boolean 类型,如果 Set 集合包含指定的对象,则返回 true,否则返回 fal ...

  6. java 发送邮件 菜鸟_Java发送邮件的方法

    1.需要的jar包 2.具体实现方法 1.设置邮箱主机.需要认证.邮箱协议 Properties pro=new Properties(); pro.setProperty("mail.ho ...

  7. java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例

    本文整理汇总了Java中javax.crypto.SecretKeyFactory.generateSecret方法的典型用法代码示例.如果您正苦于以下问题:Java SecretKeyFactory ...

  8. java 虚函数_Java的虚方法

    虚方法出现在Java的多态特性中, 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).在Java中,子类 ...

  9. java post 发送_Java发送post方法详解

    总结一下java使用http发送post的方法: 1.post请求用于发送json 格式的参数: /** * post请求(用于请求json格式的参数) * * @param url 地址 * @pa ...

最新文章

  1. python scrapy菜鸟教程_scrapy学习笔记(一)快速入门
  2. android 调用java webservice_android通过ksoap2调用java写的CXF 的webservice
  3. 标准配置的UBUNTU 11.10 RUBY VMWARE 镜像,手工MOD(ZSH_RVM_RAILS_VIM)
  4. spring webscoket服务端使用记录
  5. CSS块元素与内联元素(转)
  6. 5.SOA架构:服务和微服务分析及设计--- REST服务建模过程
  7. 事务对性能影响_mysql之事务
  8. 函数式编程基础---高阶函数和偏函数
  9. 基于51单片机的红外遥控器设计
  10. python3处理普通文件【open内置函数】
  11. python操作 docx
  12. tensorflow识别水果
  13. LabelImg 标注 yolo 数据 环境配置和预制标签 predefined_classes.txt 的使用 详解
  14. android 提高启动速度慢,安卓启动速度过慢的原因及解决方法
  15. 手机服务器 微信QQ,玩家天价买服务器语聊开黑 小白没想明白:微信QQ难道不行?...
  16. MySql 的操作日志 历史记录
  17. 【HBase】HBase入门详解(一)
  18. Python Tkinter - WiFi WL Test 上位机 (自动搜索Uart、执行exe/Bat)
  19. 用VBS代码写PPT/PPTX批量转PDF,绝对可用,本人就在用着……ppt转pdf代码
  20. 无线式PT二次回路压降测试仪(SXP-W4m)操作程序

热门文章

  1. InfoQ趋势报告:架构和设计领域技术演变详解
  2. CentOS安装新版RabbitMQ解决Erlang 19.3版本依赖
  3. spring读取配置文件的几种方式
  4. 《爱情公寓2》将播 恶搞宣传片大喊“有种别看”
  5. 软工作业 5:词频统计——增强功能
  6. Koa2和Redux中间件源码研究
  7. 6位技术大咖11月倾心巨献,大数据+安全主题的技术分享合集【阿里云MVP 干货集锦】...
  8. 全国首个窄带物联网实验局落户福州 助力智慧城市建设
  9. Android Broadcast Receiver
  10. Keepalived Nginx 高可用性配置