java 左移负数_Java中的左移时的负数问题
java 中的左移的运算符为<
但是使用的时候要注意符号位的问题,如下:
public void shiftTest() {
int n = 1;
while (n != 0) {
n = n << 1;
System.out.println(Integer.toBinaryString(n));
}
}
输出:
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
10000000000
100000000000
1000000000000
10000000000000
100000000000000
1000000000000000
10000000000000000
100000000000000000
1000000000000000000
10000000000000000000
100000000000000000000
1000000000000000000000
10000000000000000000000
100000000000000000000000
1000000000000000000000000
10000000000000000000000000
100000000000000000000000000
1000000000000000000000000000
10000000000000000000000000000
100000000000000000000000000000
1000000000000000000000000000000
10000000000000000000000000000000
0
这里需要关注的是最后两行的输出。
首先是倒数第二行,我们把数字每4位分隔开来看,为1000 0000 0000 0000 0000 0000 0000 0000,回想一下,Java中的int型的数据是32位的有符号数,并且第一位为符号位,而当前这个数字已经显示为32位了,因此说明初始的1已经被位移到了整个int的首位,也就是符号位,此时,这个数字已经变成了一个负数,并且值为Java中int的最小值:-2147483648。
而最后一行,说明此时,1在被位移至整个int的最左边之后,再次左移,此时被移除了整个数字,而整个数字变为了0。
还有一点要注意的是,Java中int的位数为32,因此若左移运算符右侧的数字大于32的话,实际运算的位移的位数为其对32取余的数字。
如:
n = 1;
System.out.println(n << 33);
输出:
2
因为33 % 32 = 1,所以,实际结果为将1 左移1位的结果,即2。
java 左移负数_Java中的左移时的负数问题相关推荐
- java右移位_java中的左移 右移
1. 左移运算符 左移运算符< 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果 ...
- map java 初始化赋值_Java 中 HashMap 初始化时赋值(示例代码)
1.HashMap 初始化的文艺写法 HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器.普通青年一般会这么初始化: HashMap map = new HashMap ...
- java 二进制 表示负数_java中的负数表示
下面这行代码的输出是什么? 1 public static void main(String[] args) { 2 System.out.println(0xffffffff); 3 } 下面两行代 ...
- java 异常 中文_Java中所有的运行时异常,带中文解释
展开全部 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:Negat ...
- java数组中包含元素_Java中声明数组时,包括数组的名字、数组中包含的元素的 。 (5.0分)_学小易找答案...
[简答题]3,单冲压片机的安装程序? [判断题]continue语句只用于循环语句中,它起到终止本次循环,返回到循环开始处的作用. (5.0分) [判断题]default在switch选择结构中是必需 ...
- java mod %区别_Java中 % 与Math.floorMod() 区别详解
%为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...
- java 股票 代码_Java中利用散列表实现股票行情的查询_java
---- 在java中,提供了一个散列表类Hashtable,利用该类,我们可以按照特定的方式来存储数据,从而达到快速检索的目的.本文以查询股票的收盘数据为例,详细地说明java中散列表的使用方法. ...
- java 数据类型分为_JAVA中分为基本数据类型及引用数据类型
byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...
- java集合总结_Java中集合总结
Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而 ...
最新文章
- 全民IT时代到来了?学计算机很有前途?——淘宝2011校园招聘笔试感想
- gvim在windows下中文乱码的终极解决方案
- 【SRX】RE与PFE策略不同步,导致Commit失败-----案例分析
- 使用Hybris commerce的promotion rule进行促销活动
- servlet中实现页面跳转return “r:”和return “f:
- android存电话号码,如何从android中删除联系人的电话号码?
- 真的掏空了吗?华为开始疯狂出4G手机
- 1089 狼人杀-简单版 (20分)
- Hololens Vuforia 物体识别
- E-prime实验设计常用技术
- MTK 刷机操作说明v2.0(单路)
- 特征值、特征根、本征值
- HTML5中thead标签,【HTML5】table标签中thead、tbody、tfoot的作用
- 43岁,转行当了大学老师
- Centos网络管理(三)-网络配置相关
- Captcha Cracker (java)附带replace用法
- UltraISO 制作系统启动盘教程
- 盘点2019年25大人工智能趋势
- LoadRunner性能测试关注指标及结果分析
- MATLAB自动驾驶工具箱——卡尔曼运动跟踪示例解读