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语言编写)
易语言有符号转换到无符号源码,有符号转换到无符号,有符号转无符号整数,wvsprintf,StrToIntEx
使用c语言实现的无符号大整数的加、减、乘、除(取整和求余运算),可直接运行
易语言源码易语言字节集解决无符号整数高位位与源码.rar
<无符号数>→<无符号实数>|<无符号整数> <无符号实数>→<无符号整数>.<数字串>[E<比例因子>]|<无符号整数>E<比例因子> <比例因子>→<有符号整数> <有符号整数>→[+|-]<无符号整数> <无符号整数>→<数字串> <数字串>...
S7-200SMART_数据排序(整数+双整数+实数+无符号数)库文件及使用说明
VC 无符号大整数类计算方法,作者:缪元虎,四川绵阳供电局,重载的减法运算符,因为是无符号数,所以结果为大数减小数得到的差,乘2运算,即// a = a * 2^dwTimes; 相当于左移一位二进制,低位补0,除2运算;相当于...
易语言字节集解决无符号整数高位位与源码。@易语言在线学习。
给新手看看,优点是结构还算清晰。希望对于java刚上手的小码农们有启发
Java做的大整数计算器,附源代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Ca { // main public static void main(String args[]) { CaculatorFrame1 frame = new ...
十分简单的四则整数计算器,用于初学者 接触下 JAVA图形界面
S7-200SMART PLC中无符号数据转换+比较+运算(子程序可重复调用)
桂林电子科技大学计算机与信息安全学院计算机组成原理课程设计,题目为输入包含10个整数(无符号数)的数组M,输出中位数。文件里面有代码,有文档。下载可直接使用。
题目要求:从键盘上输入一字符串(包括字母、数字等),最后以";"结束,编写程序识别出其中的无符号数。 报告内含代码
JAVA处理最大整数实验报告,是在elipse环境下进行的
java写的大整数乘法 可以计算很大的整数
JavaScript正则表达式校验非零的负整数实例.docx
对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数
我们所用的单片机很有可能是16位或者8位的,这样,...16位单片机无符号数最大值为65535,有符号数最大值为32767.对于32的单片机来说,因为我们一般所处理的值很少能超过有符号数的最大取值,所以比较少遇到下面出现的问题.