“>>”算术右移运算符, 表示带符号右移,它使用最高位填充移位后左侧的空位。右移的结果为:每移一位,第一个操作数被2除一次,移动的次数由第二个操作数确定。按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补“>>>“无符号右移运算,逻辑右移, 表示无符号右移, 只对位进行操作,没有算术含义,它用0填充左侧的空位。
按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。
j>>>i 与 j/(int)(Math.pow(2,i))的结果相同,其中i和j是整形。算术右移不改变原数的符号,而逻辑右移不能保证这点。
移位运算符约简其右侧的操作数,当左侧操作数是int类型时,右侧以32取模;当左侧是long类型时,右侧以64取模。测试代码1:public class Test   {   public static void main(String[] args)   {   System.out.println("1、以下测试>:");   int a = 1, b = 2;   System.out.println(a > b);   System.out.println("\n2、以下测试>>:");   System.out.println("15 >> 2 = " + (15 >> 2));   System.out.println("\n3、以下测试>>>:");   for (int i = 0; i < 10; i++)   {   for (int j = 0; j < 500; j = j + 5)   {   System.out.println(j / (int) (Math.pow(2, i)));   System.out.println(j >>> i);   }   }   }  }测试代码2:public class Test {  public Test(){  System.out.println("=============算术右移 >> ===========");  int i=0xC0000000;  System.out.println("移位前:i= "+i+" = "+Integer.toBinaryString(i)+"(B)");  i=i>>28;  System.out.println("移位后:i= "+i+" = "+Integer.toBinaryString(i)+"(B)");  System.out.println("---------------------------------");  int j=0x0C000000;  System.out.println("移位前:j= "+j+" = "+Integer.toBinaryString(j)+"(B)");  j=j>>24;  System.out.println("移位后:j= "+j+" = "+Integer.toBinaryString(j)+"(B)");  System.out.println("\n");  System.out.println("==============逻辑右移 >>> =============");  int m=0xC0000000;  System.out.println("移位前:m= "+m+" = "+Integer.toBinaryString(m)+"(B)");  m=m >>> 28;  System.out.println("移位后:m= "+m+" = "+Integer.toBinaryString(m)+"(B)");  System.out.println("---------------------------------");  int n=0x0C000000;  System.out.println("移位前:n= "+n+" = "+Integer.toBinaryString(n)+"(B)");  n=n>>24;  System.out.println("移位后:n= "+n+" = "+Integer.toBinaryString(n)+"(B)");  System.out.println("\n");  System.out.println("==============移位符号的取模===============");  int a=0xCC000000;  System.out.println("移位前:a= "+a+" = "+Integer.toBinaryString(a)+"(B)");  System.out.println("算术右移32:a="+(a>>32)+" = "+Integer.toBinaryString(a>>32)+"(B)");  System.out.println("逻辑右移32:a="+(a>>>32)+" = "+Integer.toBinaryString(a>>>32)+"(B)");  }  public static void main(String[] args){  new Test();  }  }  运行结果:
=============算术右移 >> ===========
移位前:i= -1073741824 = 11000000000000000000000000000000(B)
移位后:i= -4 = 11111111111111111111111111111100(B)
---------------------------------
移位前:j= 201326592 = 1100000000000000000000000000(B)
移位后:j= 12 = 1100(B)==============逻辑右移 >>> =============
移位前:m= -1073741824 = 11000000000000000000000000000000(B)
移位后:m= 12 = 1100(B)
---------------------------------
移位前:n= 201326592 = 1100000000000000000000000000(B)
移位后:n= 12 = 1100(B)

“”和“” java相关推荐

  1. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  2. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  6. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  7. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  8. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  9. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

  10. 科学处理java.lang.StackOverflowError: null异常

    java.lang.StackOverflowError: null异常处理 在项目运行中出现StackOverflowError 首先要检查在编码中是否有明显的递归编码,比如死循环或者无限循环调用. ...

最新文章

  1. Codeforces Round #649 (Div.2)题解
  2. 多核处理器_AMD锐龙翻身!单核、多核CPU跑分均名列榜首
  3. 【数据安全案例】车管信息再遭窃取,数据安全缺乏保障
  4. 黑马程序员-JAVA基础-IO流中的装饰设计模式
  5. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 能支撑10万以上客户端的数据同步下载问题...
  6. mysql query browser的使用_影响MySQL性能的配置参数
  7. 【Java 集合框架】最全的 Java 集合框架入门手册
  8. Circumventing Group Policy Settings
  9. 2007年计算机工程师,全国计算机等级考试四级数据库工程师考试大纲(2007年版)...
  10. 跨境第三方支付有什么,怎么进行跨境支付?
  11. 克鲁伊夫:巴萨孤独求败 无巨星照样演完美风暴(2009-11-26)
  12. 记梦之三:我成了萧峰
  13. 2017 暑期实习校园招聘(Java后台开发方向)面经分享
  14. 黑客攻击_我如何开始黑客攻击
  15. Jar包常见的反编译工具介绍与使用
  16. ctf解密图片得到flag_CTF中图片隐写的一些整理总结
  17. stm32cubemx hal学习记录:SPI W25Q64
  18. PHP微信怎么计步数,微信运动怎么关注好友步数(微信运动计步功能使用方法介绍)...
  19. 供应链金融及产业风控
  20. 【软件质量保证与测试】2.4软件测试与软件开发的关系

热门文章

  1. 1、类型和语法——类型
  2. 厉害了!Intel第九代酷睿参数曝光
  3. 乌班图系统16.04安装
  4. 解决git提交问题error: The requested URL returned error: 403 Forbidden while accessing
  5. php 自动创建目录
  6. Cent OS yum 安装 Adobe flash player
  7. 跟我学PHP第二篇- 配置Mysql以及PHP WampServer篇(1)
  8. Visio工具 UML的建模
  9. X-Scan描述及简单教程
  10. 软件项目送上门来了,还要学会说不,接了项目拿了定金噩梦才刚刚开始