Java负整数的左移、右移、无符号右移。正数的位移没有涉及到符号,而且正数的原码、反码、补码都是一样的,所以相对简单,但是对于负整数的位移,往往容易混淆。

Java的<<  >>   >>> 都是针对补码来进行的,因为Java只存储补码。

例如对整数-3进行<<  >> >>>运算做说明。

整数-3的二进制

原码为 10000000 00000000 00000000 00000011

反码为 11111111 11111111 11111111 11111100

补码为 11111111 11111111 11111111 11111101

Java存储的整数-3即为11111111 11111111 11111111 11111101,

1、

对-3左移3位     -3<<3

<<     >> 都是要关照符号位的,所以

11111111 11111111 11111111 11111101 左移3位后为

11111111 11111111 11111111 11101000 ,

原码为:10000000 00000000 00000000 00100111,转为整数即-24

2、

对-3右移3位     -3>>3 ,

就是对-3的补码11111111 11111111 11111111 11111101右移3位,结果为:

1 111 1111111 11111111 11111111 11111,由于是负数,高位需要补1(正数高位补0),而

1 111 1111111 11111111 11111111 11111

的原码为10000000 00000000 00000000 00000001,结果为-1,所以-3>>3的结果整数值为-1

3、

对-3进行无符号右移, -3>>>3,由于>>>是不顾符号的,高位全部补0,

11111111 11111111 11111111 11111101 无符号右移3位为

000 11111111 11111111 11111111 11111

由于无符号右移之后为正数,正数的补码和原码是一致的,所以 -3>>>3的值即为

000 11111111 11111111 11111111 11111

的值,变成整数输出为:0*2^31+0*2^30+0*2^29+1*2^28+1*2^27+.....+1*2^1+1*2^0=536870911

Java负整数的左移、右移、无符号右移相关推荐

  1. java中右移运算符和无符号右移运算符的区别

    在做一个pcm音频时遇到了这个符,但是我看有些百度的地方的解释都不能令我很懂,所以就整理下. 首先左移和右移的区别是很好区分的 左移<< :就是该数对应二进制码整体左移,左边超出的部分舍弃 ...

  2. JAVA移位运算符-左移、右移、无符号右移 (简解)

    java移位运算符:<<(左移).>>(带符号右移)和>>>(无符号右移). 一.左移运算符<< m<<n 代表把数字m在无溢出的前提 ...

  3. java的左移位()和右移位()和无符号右移()

    1.左移     ->左移运算符"<<" - 使指定值的所有位都左移规定的次数.     ->左移m<<n 代表把数字m在无溢出的前提下乘以2的 ...

  4. 通过原码、反码、补码彻底搞清左移、右移、无符号右移

    文章目录 原码.反码.补码 有符号右移>> 无符号右移>>> 有符号左移<< 总结有无符号 原码.反码.补码 正数 正数的原码.反码.补码都是该数字的二进制表 ...

  5. 原码反码补码以及左移右移无符号左移右移。

    一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符 ...

  6. java平移变换_java移位运算符:(左移)、(带符号右移)和(无符号右移)。...

    1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规 ...

  7. [转载] java左移右移和无符号右移

    参考链接: Java中的按位右移运算符 ###知识点 java的三种位移运算符: <<:左移运算符,num << 1,相当于num乘以2 >>:右移运算符,num ...

  8. java左移、右移、无符号右移

    右移 System.out.println(-3>>1); 结果是-2,为什么会是-2呢?下面我们来看一下. System.out.println(Integer.toHexString( ...

  9. java移位运算符实验程序:lt;lt;(左移)、gt;gt;(带符 号右移)和gt;gt;gt;(无符号右移)...

    public class txs { static void leftbit(){ int i;               //整型长度为32位                           ...

最新文章

  1. 独家 | 我们扒出了这家中国创业公司,竟比苹果iPhone X早两年推出黑科技,还不用借助深度摄像头
  2. LeetCode - Easy - 169. Majority Element
  3. nginx location 斜杠_【一点资讯】斜杠青年双·11买什么本最划算?光影精灵6让你做“多面娇娃” www.yidianzixun.com...
  4. adb隐藏状态栏图标_[应用]华为手机怎么设置隐藏状态栏上的图标
  5. “新闻”频道“最新更新”有问题吗?
  6. 009-2010网络最热的 嵌入式学习|ARM|Linux|wince|ucos|经典资料与实例分析
  7. 如何设置tomcat定时自动重启
  8. 帆软round函数不生效_第一卷深入了解Python内置函数,讲解内置函数都有什么作用...
  9. [从零学习汇编语言] - 计算机发展历史
  10. 使用ConfuserEx加密混淆程序以及如何脱壳反编译
  11. 【极限精简888M,老机专用】星岚技术 Win7 x64 深度精简版 V2020.10
  12. oracle临时表空间追加文件,Oracle临时表空间查看、添加临时表空间数据文件、修改默认临时表空间 方法!...
  13. Leaflet vs. OpenLayers3哪个是更好的JavaScript 地图客户端
  14. 计算机内存不够在哪里清扫,电脑内存不足怎么清理
  15. 金额中文大写c语言,C语言编程:数字金额转换为中文大写金额?
  16. 公司职员薪水管理系统(List)
  17. 3:AngularJS:模糊查询过滤内容,下拉菜单排序,过滤敏感字符,验证判断后添加表格信息
  18. 计算机课堂活跃小游戏,几个课堂小游戏(能活跃课堂气氛)
  19. 计算机网络 FDM TDM
  20. Unity在Canvas上画线(Draw Line)实现

热门文章

  1. Apple苹果终端如何进行批量管理?
  2. 如何在 Android 上恢复删除屏幕截图/照片的四种方式
  3. 海鲜和水果不能一起吃吗?
  4. 批量下载人像图片的技巧,POCO相册图片如何下载的方法
  5. 计算机技术的发展包括几个阶段,目前电子计算机处于哪个阶段?计算机发展的四个阶段...
  6. ping检测整个网段地址在线
  7. 2023Mac装机系统优化软件CleanMyMacX
  8. 程序或算法的时间复杂度
  9. 鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转
  10. Daimayuan Online Judge 小蜗的疑问