运算符“>>”执行算术右移,它使用最高位填充移位后左侧的空位。右移的结果为:每移一位,第一个操作数被2除一次,移动的次数由第二个操作数确定。

逻辑右移或叫无符号右移运算符“>>>“只对位进行操作,没有算术含义,它用0填充左侧的空位。

算术右移不改变原数的符号,而逻辑右移不能保证这点。

移位运算符约简其右侧的操作数,当左侧操作数是int类型时,右侧以32取模;当左侧是long类型时,右侧以64取模。

测试代码如下:

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)

==============移位符号的取模===============

移位前:a= -872415232 = 11001100000000000000000000000000(B)

算术右移32:a=-872415232 = 11001100000000000000000000000000(B)

逻辑右移32:a=-872415232 = 11001100000000000000000000000000(B)

算数右移逻辑右移java的表示_java的算术右移()与逻辑右移()相关推荐

  1. 【Java】位运算符---算术右移和逻辑右移、算术左移和逻辑左移

    文章目录 1. 算术左移和逻辑左移 2. 算术右移和逻辑右移 3. Java中<<.>>和>>>的含义 1. 算术左移和逻辑左移 对于有符号数或无符号数:算术 ...

  2. c语言无符号整型右移,c语言 java 有符号数,无符号数. 左移,右移运算

    1: c语言区分有符号数,无符号数.有符号数是符号位在首位,无符号数首位就是普通位数. java只有有符号数,换句话说java二进制中首位都是符号位.0正1负. 2: 左移在所有语言中只是左移,不存在 ...

  3. 算术左移,逻辑左移,算术右移,逻辑右移之间的区别

    1.算术左移,逻辑左移: 都是在右边补0: 比如 00101011 算术左移一位:01010110 逻辑左移一位:01010110 对于二进制的数值来说左移n位等于原来的数值乘以2的n次方 比如000 ...

  4. 逻辑左移、算术左移、逻辑右移、算术右移

    汇编指令: (注意,所有移位指令,被移出去的那个位上的值,会被赋值给CF标志位) 逻辑左移:SHL(右边补0) 算术左移:SAL(1.寄存器中自动转换成SHL,左移不存在算术左移,所有左移都是SHL: ...

  5. 算术右移(right arithmetic shift)逻辑右移(right logical shift)算术左移和逻辑左移(left logical shift)

    算术右移:数字向右移动,左边补符号位.Windows中支持的函数为:Int64ShraMod32 逻辑右移:数字向右移动,左边补0.Windows中支持的函数为:Int64ShrlMod32 算术左移 ...

  6. Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位

    Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位 一.概述 1.在浏览一篇文章时,看到一个介绍 ,使用位移操作替代乘除法 ,若位移多位该怎么计算呢?  二.代码理解 ...

  7. java物理架构_Java应用架构读书笔记(1):物理设计与逻辑设计

    逻辑设计 几乎大部分帮助软件设计和架构的原则和模式主要都是关注逻辑设计.逻辑设计主要关于语言构造块,比如类,操作符,方法和包.识别一个类的方法,类之间的关系,系统包的接口等问题都是逻辑设计相关的问题. ...

  8. java比较运算_Java比较运算符

    注意哦: 1.  > . < . >= . <= 只支持左右两边操作数是数值类型 2.  == . != 两边的操作数既可以是数值类型,也可以是引用类型 public clas ...

  9. java第二章_JAVA第二章知识点

    JAVA第二章知识点 本章知识梳理 2.1 关键字 2.2 标识符 2.3 变 量 2.4运算符 2.5 程序流程控制 2.6 方法 2.1 关键字 关键字(keyword)的定义和特点 定义:被ja ...

最新文章

  1. windows 技术篇-判断某个ip地址相对于自己的主机是内网ip还是外网ip实例演示
  2. 登录抓包逆向分析学习笔记
  3. 软考-信息系统项目管理师-项目质量管理
  4. 【AIX 命令学习】lsattr 显示一个给定设备或一种设备的属性
  5. python psycopg2_python2.7 psycopg2
  6. 征稿 | 2019年全国知识图谱与语义计算大会(CCKS2019)第二轮征稿启事
  7. Eclipse如何关闭在RUN/DEBUG时弹出窗口?
  8. 贪心 赛码 1001 Movie
  9. 《精通javascript》5,6章小结(一)
  10. abp后台任务BackGroundWorker
  11. linux的I/O多路转接select的fd_set数据结构和相应FD_宏的实现分析
  12. BCH码(BCH code)详细分析
  13. (二)html 复杂表格
  14. 接口性能测试方案设计方法有哪些?要怎么去写?
  15. 私有化单机题库管理软件“题库管家”1.3版本正式发布,windows版与mac版下载地址
  16. MCU--低功耗处理流程
  17. 搭建美丽天天秒链动2+1OpenRApp开发
  18. 比较好的Java 网站
  19. Vivo升级android版本,vivo手机系统怎么升级?vivo系统升级教程
  20. java security_java.security.NoSuchAlgorithmException

热门文章

  1. 各种插入函数收集整理
  2. 用Qt开发小游戏《愤怒的小鸟》
  3. Everything不显示.lnk文件
  4. 3.《解读基金:我的投资观与实践》读书笔记
  5. Installing OpenCV 2.4.9 in Ubuntu 14.04 LTS
  6. nexus2.5版本升级到nexus2.14(同时升级到nexus3.24版本)版本
  7. 仿京东天猫商品详情页
  8. unity游戏场景设计
  9. 欧几里得距离 曼哈坦距离 明考斯基距离
  10. Zetero引用特定格式参考文献的手把手操作