Java负整数的左移、右移、无符号右移
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负整数的左移、右移、无符号右移相关推荐
- java中右移运算符和无符号右移运算符的区别
在做一个pcm音频时遇到了这个符,但是我看有些百度的地方的解释都不能令我很懂,所以就整理下. 首先左移和右移的区别是很好区分的 左移<< :就是该数对应二进制码整体左移,左边超出的部分舍弃 ...
- JAVA移位运算符-左移、右移、无符号右移 (简解)
java移位运算符:<<(左移).>>(带符号右移)和>>>(无符号右移). 一.左移运算符<< m<<n 代表把数字m在无溢出的前提 ...
- java的左移位()和右移位()和无符号右移()
1.左移 ->左移运算符"<<" - 使指定值的所有位都左移规定的次数. ->左移m<<n 代表把数字m在无溢出的前提下乘以2的 ...
- 通过原码、反码、补码彻底搞清左移、右移、无符号右移
文章目录 原码.反码.补码 有符号右移>> 无符号右移>>> 有符号左移<< 总结有无符号 原码.反码.补码 正数 正数的原码.反码.补码都是该数字的二进制表 ...
- 原码反码补码以及左移右移无符号左移右移。
一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符 ...
- java平移变换_java移位运算符:(左移)、(带符号右移)和(无符号右移)。...
1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规 ...
- [转载] java左移右移和无符号右移
参考链接: Java中的按位右移运算符 ###知识点 java的三种位移运算符: <<:左移运算符,num << 1,相当于num乘以2 >>:右移运算符,num ...
- java左移、右移、无符号右移
右移 System.out.println(-3>>1); 结果是-2,为什么会是-2呢?下面我们来看一下. System.out.println(Integer.toHexString( ...
- java移位运算符实验程序:lt;lt;(左移)、gt;gt;(带符 号右移)和gt;gt;gt;(无符号右移)...
public class txs { static void leftbit(){ int i; //整型长度为32位 ...
最新文章
- 独家 | 我们扒出了这家中国创业公司,竟比苹果iPhone X早两年推出黑科技,还不用借助深度摄像头
- LeetCode - Easy - 169. Majority Element
- nginx location 斜杠_【一点资讯】斜杠青年双·11买什么本最划算?光影精灵6让你做“多面娇娃” www.yidianzixun.com...
- adb隐藏状态栏图标_[应用]华为手机怎么设置隐藏状态栏上的图标
- “新闻”频道“最新更新”有问题吗?
- 009-2010网络最热的 嵌入式学习|ARM|Linux|wince|ucos|经典资料与实例分析
- 如何设置tomcat定时自动重启
- 帆软round函数不生效_第一卷深入了解Python内置函数,讲解内置函数都有什么作用...
- [从零学习汇编语言] - 计算机发展历史
- 使用ConfuserEx加密混淆程序以及如何脱壳反编译
- 【极限精简888M,老机专用】星岚技术 Win7 x64 深度精简版 V2020.10
- oracle临时表空间追加文件,Oracle临时表空间查看、添加临时表空间数据文件、修改默认临时表空间 方法!...
- Leaflet vs. OpenLayers3哪个是更好的JavaScript 地图客户端
- 计算机内存不够在哪里清扫,电脑内存不足怎么清理
- 金额中文大写c语言,C语言编程:数字金额转换为中文大写金额?
- 公司职员薪水管理系统(List)
- 3:AngularJS:模糊查询过滤内容,下拉菜单排序,过滤敏感字符,验证判断后添加表格信息
- 计算机课堂活跃小游戏,几个课堂小游戏(能活跃课堂气氛)
- 计算机网络 FDM TDM
- Unity在Canvas上画线(Draw Line)实现