以下为个人理解,有不对的地方请提出

Java中,>>、>>>都是在数字的二进制的补码中进行的

正数的补码为本身 如
33的二进制表示为 00000000 00000000 00000000 00100001 补码为 00000000 00000000 00000000 00100001

负数的补码为符号位即最高位1不变(负数符号位为1,正数为0),其余各位取反,再加1 如
-33的二进制表示为 10000000 00000000 00000000 00100001 补码为 11111111 11111111 1111111 11011111

进行右移>>操作
33>>5 即 补码 00000000 00000000 00000000 00100001 右移5位 00000000 00000000 00000000 00000001 
因为33为正数,再取补码为 00000000 00000000 00000000 00000001 转为十进制为1 即33>>5=1

-33>>5 即 补码 11111111 11111111 1111111 11011111 右移5位 00000111 11111111 11111111 11111110
因为-33为负数,再取补码为 00000100 0000000 0000000 00000010 最前一位1为符号位 转为十进制为-2 即-33>>5=-2

进行无符号右移>>>操作
33>>>5 即 补码 00000000 00000000 00000000 00100001 右移5位 00000000 00000000 00000000 00000001 
因为无符号位,代表结果肯定为正数,正数取补码为本身 00000000 00000000 00000000 00000001 转为十进制为1 即33>>>5=1

-33>>>5 即 补码 11111111 11111111 1111111 11011111 右移5位 00000111 11111111 11111111 11111110
因为无符号位,代表结果肯定为正数,正数取补码为本身 00000111 11111111 11111111 11111110 转为十进制为134217726 即-33>>>5=134217726

[java] view plaincopy
  1. public class Operator
  2. {
  3. public static void main(String[] args)
  4. {
  5. System.out.println(33>>5);
  6. System.out.println(-33>>5);
  7. System.out.println(33>>>5);
  8. System.out.println(-33>>>5);
  9. }
  10. }

以上为个人理解,如有不对的地方,请各位指正。

转载于:https://www.cnblogs.com/daojian/p/4910568.html

Java中正数与负数操作、的区别相关推荐

  1. java 正数减去负数,Java中正数与负数操作、的区别

    以下为个人理解,有不对的地方请提出 Java中,>>.>>>都是在数字的二进制的补码中进行的 正数的补码为本身 如 33的二进制表示为 00000000 00000000 ...

  2. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  3. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

  4. Java中wait和sleep方法的区别

    1.两者的区别 这两个方法来自不同的类分别是Thread和Object 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块和方法锁). wait ...

  5. java == hashcode,java中==和equals和hashCode的区别

    java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...

  6. java的 x跟x_关于语法:java中的x ++和++ x有区别吗?

    java中的++ x和x ++有区别吗? 提示大量相同的答案...... ...并提出第一个完全相同的答案... 最快的去战利品,按最旧排序,点击upvote.ohowoho. 我确信我有它! 无论如 ...

  7. java中拼接和 的区别_浅析Java中String与StringBuffer拼接的区别

    学习笔记: 1.String拼接会创建一个新的String对象,存储拼接后的字符串: StringBuffer拼接是直接在本身拼接,会即时刷新. 2.String只能拼接String类型的字符串: S ...

  8. java中字符流和字节流的区别_java中字节流和字符流有哪些区别

    java中字节流和字符流的区别有:1.定义不同:2.结尾不同:3.处理方式不同:4.缓冲区不同:5.编码方式不同.字节流默认不使用缓冲区,而字符流使用缓冲区.字节流采用ASCII编码,字符流采用uni ...

  9. 杂谈——Java中同步与异步有什么区别

    大家在使用手机的时候,比如小米手机,自带云空间,可以将数据同步到云空间上:很多文档app也有同步的功能.而我们牛气冲冲的Java自然也有同步与异步,不过Java中的同步与异步似乎与我们平常认知中的同步 ...

最新文章

  1. java从字符串中提取数字
  2. oracle的clob赋值_JAVA处理Oracle数据库CLOB读写操作
  3. 成功当选2014年度MVP
  4. Java静态变量与静态方法与成员变量成员方法的区别
  5. NMF 非负矩阵分解
  6. menisa mysql_实例详细说明linux下去除重复行命令uniq
  7. SpringMVC获取请求参数-POJO类型参数
  8. 3.2 亿人都在刷抖音,而优秀的人在看这些公众号
  9. 制作系统盘,重装新系统。
  10. Nginx四层负载均衡模块添加
  11. java 静态绑定原理_Java方法的静态绑定与动态绑定讲解
  12. Flink watermark
  13. Oracle 常用系统数据查询SQL(转)
  14. 2015与2016年终总结
  15. Jsp 中遇到待解决问题
  16. Axure9元件库,如何自建,如何利用下载的元件库
  17. 2018年易语言FPS骨骼方框透视辅助开发
  18. 能领拼多多优惠券的app
  19. ue4设置图片大小_UE4 相机拍照功能(图片保存)
  20. (踩坑日记)Win10下安装Ubuntu18.04(包括NIVIDIA驱动安装)+主题美化+设置多cuda切换+通过anaconda下安装tensorflow1.x-gpu以及pytorch-gpu

热门文章

  1. image to pdf
  2. JVM原理探究及调优方法论
  3. 【Hello CSS】第六章-文档流与排版
  4. Android中SimpleAdapter的使用—自定义列表
  5. css3 定义选择器
  6. XAMPP on Mac 组态 Virual Host
  7. js和jquery书籍
  8. 北向资金运作akshare
  9. Android应用开发—知识点汇总
  10. 力软 java主从表保存_JAVA常用知识总结(十二)——数据库(二)