Java中提供了两种右移操作符:有符号右移操作符>>和无符号右移操作符>>>。它们的区别在于,有符号右移操作符会将高位填充为符号位(即正数填充0,负数填充1),而无符号右移操作符会将高位填充为0。

下面分别给出有符号右移和无符号右移的例子:

  1. 有符号右移
int a = -8;
int b = a >> 2;
System.out.println(Integer.toBinaryString(a)); // 11111111111111111111111111111000
System.out.println(Integer.toBinaryString(b)); // 11111111111111111111111111111110

在这个例子中,a是一个负数(其二进制表示的最高位是1),将a向右移动2位时,高位会被填充为1,得到的结果是一个负数,其二进制表示的最高位仍然是1。

int c = 8;
int d = c >> 2;
System.out.println(Integer.toBinaryString(c)); // 1000
System.out.println(Integer.toBinaryString(d)); // 10

在这个例子中,c是一个正数(其二进制表示的最高位是0),将c向右移动2位时,高位会被填充为0,得到的结果是一个正数,其二进制表示的最高位仍然是0。

  1. 无符号右移
int a = -8;
int b = a >>> 2;
System.out.println(Integer.toBinaryString(a)); // 11111111111111111111111111111000
System.out.println(Integer.toBinaryString(b)); // 00111111111111111111111111111110

在这个例子中,a是一个负数(其二进制表示的最高位是1),将a进行无符号右移操作时,高位会被填充为0,得到的结果是一个正数,其二进制表示的最高位是0。

int c = 8;
int d = c >>> 2;
System.out.println(Integer.toBinaryString(c)); // 1000
System.out.println(Integer.toBinaryString(d)); // 10

在这个例子中,c是一个正数(其二进制表示的最高位是0),将c进行无符号右移操作时,高位会被填充为0,得到的结果是一个正数,其二进制表示的最高位仍然是0。

java有符号和无符号右移相关推荐

  1. java signed_java什么是有符号、无符号

    有符号与无符号的概念 最明显的区别就是二者表示的范围不同 无符号数中,所有的位都用于直接表示该值的大小. 有符号数中最高位用于表示正负,所以,当为正值时,该数的最大值就会变小. 我们举一个字节的数值对 ...

  2. c语言无符号扩展,深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断...

    开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...

  3. 深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断...

    开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...

  4. linux有符号和无符号,汇编中有符号与无符号数的区分

    转载自:http://hi.baidu.com/asmsky/blog/item/7290d20076cab6da277fb5b8.html 一.只有一个标准! 在汇编语言层面,声明变量的时候,没有 ...

  5. 【C语言进阶深度学习记录】二 有符号与无符号

    今天学习C语言中的有符号与无符号 文章目录 1 计算机中的符号位 1.1 有符号数的表示法 1.2 无符号数的表示法 1.3 signed 和 unsigned 2 实验-当有符号数与无符号数进行运算 ...

  6. C语言——确定char、short、int和short变量有符号和无符号时的取值范围

    C语言--确定char.short.int和short变量有符号和无符号时的取值范围 #include <stdio.h> #include <limits.h>// dete ...

  7. 有符号和无符号整型的临界点

    在C++ primer plus 上的图 觉得好久copy下来了 关于有符号和无符号整型的重置点 .

  8. C语言中的有符号与无符号(挖坑)

    1.计算机中的符号位,计算机如何表示正数和负数? 数据类型的最高位用于标识数据的符号 最高位为1,表明这个数为负数 最高位为0,表明这个数为正数 2.有符号数的表示法 在计算机内部用补码表示有符号数 ...

  9. Verilog -- 有符号与无符号的加法和乘法运算

    目录 Verilog中有符号与无符号的加法和乘法运算 无符号乘法和加法 有符号乘法和加法 有符号和无符号运算 参考: https://blog.csdn.net/vivid117/article/de ...

  10. c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:

    基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:单精度型:float 双精度型:double 长 ...

最新文章

  1. BZOJ1086:[SCOI2005]王室联邦——题解
  2. 【Python】8000字概括精髓,pandas必知必会50例
  3. git查看分支记录_git原理
  4. OpenCV图像中的人脸界标检测
  5. AnularJS1事件
  6. r语言ggplot画两条曲线_R语言作图——Line plot with error
  7. nagios监控linux主机,Nagios监控平台之二:nrpe监控远程Linux主机 | 旺旺知识库
  8. Android 科大讯飞离线语音识别
  9. Win7 便签设置字体方法
  10. linux源码分析汇总
  11. Spark2.1.1中用各种模式运行计算圆周率的官方Demo
  12. 人工智能教程1---科普人工智能
  13. Thinkpad自修壁纸 2019
  14. 王之泰201771010131《面向对象程序设计(java)》第十七周学习总结
  15. html中删除代码怎么写,Word删除html代码怎么写
  16. 【2021牛客暑期多校训练营7 】 xay loves count
  17. python,jsonschema, marshmallow, “None is not of type ‘string‘
  18. librosa重采样和声道设置
  19. align-content 和align-items的区别
  20. react浏览器兼容报错处理

热门文章

  1. 【案例】全国知名网上书城——基于企业中台构建智慧悦读体验
  2. JVM内存模型与内存溢出异常
  3. C#,SOAP1.1与1.2的发布与禁用(SOAP 1.2 in .NET Framework 2.0)
  4. 【转】这是一篇很完整的元器件选型指南
  5. OpenCV读取图片和保存图片全黑
  6. 金融量化交易场景下数据库如何改造?同花顺、弘源泰平真实案例分享
  7. SAP S4 HANA 本地化报表配置(科目余额表/资产负债表/利润表/会计凭证明细表)
  8. JavaScript大作业 (校园运动会网站设计与实现)
  9. three.js使用光线投射对象Raycaster在屏幕中拾取/选取对象(vue中使用three.js60)
  10. 抓铁有力榜:踏石有印,抓铁留痕