如果对char,byte或者short类型的数值进行移位处理,那么在移位进行之前,他们会被转为int类型,

并且所得到的结果也是一个int型。

若对long类型的数值进行处理所得到的结果也是long。

如果对byte或者short值进行这样的右移(>>>=)运算,得到的可能是不正确的结果,他们会被转成int类型,

然后被截断,赋值给原来的类型.

public class Test {

    /**
* @param args
*/
public static void main(String[] args) {
int i=-1;
System.out.println(Integer.toBinaryString(i));
i>>>=10;
System.out.println(Integer.toBinaryString(i));
byte b=-1; //
System.out.println(Integer.toBinaryString(b)); //调用Integer的toBinaryString(int x) 32个1
b>>>=10; //移位后为1111111111111111111111,因为b是byte类型,所以b= 11111111,还是-1的值
System.out.println(Integer.toBinaryString(b)); //又输出32个1
b=-1;
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(b>>>10)); //移位后没有赋值,直接输出,22个1 } }

11111111111111111111111111111111
1111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
1111111111111111111111

java移位操作符注意的问题的更多相关文章

  1. 【关于Java移位操作符&按位操作符】

    一.java按位运算符(操作符) 这段时间偶尔看一下源码,会发现有很多很基础的java知识在脑海中已经慢慢的淡成不常用记忆,于是打算捡起来一些. 按位运算符是来操作整数基本数据类型中的单个“比特”(b ...

  2. java移位操作符

    <<:左移操作符,右边补0,相当于乘二乘二... >>:右移操作符,左边补符号位(正数补0,负数补1),相当于除二除二... >>>:无符号右移,左边补0,相 ...

  3. Java 逻辑运算符、位运算符、移位操作符 总结(Java 学习中的小记录)

    Java 逻辑运算符.位运算符.移位操作符  总结     作者:王可利(Star·星星) 逻辑运算符,表格如下: 解析逻辑运算符表: 1.与 (&) 特点:两个都为真的时候,结果为真.两个为 ...

  4. java二进制表示形式与移位操作符

    java二进制表示形式 java中数字的二进制表示形式称为"有符号的二进制补码",下面先介绍原码,反码,补码. 编码 计算方法 原码 用最高位表示符号位,'1'表示负号,'0'表示 ...

  5. 你所不知道的,Java 中操作符的秘密?

    在 Java 编程的过程中,我们对数据的处理,都是通过操作符来实现的.例如,用于赋值的赋值操作符.用于运算的运算操作符等.用于比较的比较操作符,还包括逻辑操作符.按位操作符.移位操作符.三元操作符等等 ...

  6. java基础-操作符

    浏览以下内容前,请点击并阅读 声明 定义:操作符是一种能够对一个,两个或三个操作对象执行特定的操作,并返回一个结果的特定符号. java中操作符的种类和优先级如下表所示,除了赋值运算,所有二元操作符运 ...

  7. java移位运算符具体解释

    java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的全部位都左移 ...

  8. 第三节:带你详解Java的操作符,控制流程以及数组

    前言 大家好,给大家带来带你详解Java的操作符,控制流程以及数组的概述,希望你们喜欢 操作符 算数操作符 一般的 +,-,*,/,还有两个自增 自减 ,以及一个取模 % 操作符. 这里的操作算法,一 ...

  9. java移位运算符详解

    http://soft.chinabyte.com/database/195/11553695.shtml java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和 ...

随机推荐

  1. POJ 2826 An Easy Problem!(简单数论)

    Description Have you heard the fact "The base of every normal number system is 10" ? Of co ...

  2. 为什么Java里的Arrays.asList不能用add和remove方法?

    在平时的开发过程中,我们知道能够将一个Array的对象转化为List.这种操作,我们仅仅要採用Arrays.asList这种方法即可了.笔者前段时间一直用这种方法,有一天,我发现通过Arrays.as ...

  3. Android的矩阵(一):ColorMatrix

    最近的学习过程中看到关于android色彩矩阵的内容,以前看到这部分内容,基本都是跳过的,没有认真细读. 自己给自己找的借口是: 1,大一学的矩阵内容早就忘的干干净净了,当时学的时候就很烦人,所以现在 ...

  4. Mysql之索引的基本概念

    一.索引是什么? 比如我们要在字典中找某一字,如何才能快速找到呢?那就是通过字典的目录. 对数据库来说,索引的作用就是给‘数据’加目录. 二.索引算法 设有N条随机记录,不用索引,平均查找N/2次,那 ...

  5. 添加使用session回话属性

    @SessionAttributes("nowUser") nowUser :id/userName/password public String delectMsg(int id ...

  6. Linux系统病毒防治

    Linux系统病毒防治 一.Linux病毒的历史 1996年出现的Staog是Linux系统下的第一个病毒,它出自澳大利亚一个叫VLAD的组织.Staog病毒是用汇编语言编写,专门感染二进制文件,并通 ...

  7. NET 高效开发之不可错过的实用工具(第一的当然是ReSharper插件)

    工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢?本文为 ASP.NET 开发者介绍一些高效实用的工具,包括 SQL 管理,VS插件,内存管理,诊断工具等,涉及开发过程的各个环节 ...

  8. 如何更新 CentOS 镜像源

    话不多说, 直接上教程. 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.rep ...

  9. 编译安装 gcc 4.9并验证使用

    编译安装 gcc 4.9并验证使用 1. 准备环境(GCC 编译器) centOS 6.3 cat /proc/version Linux version 2.6.32-279.el6.x86_64 ...

  10. MySQL改变表的存储引擎

    MySQL提供了多种数据库存储引擎,存储引擎负责MySQL数据库中的数据的存储和提取.不同的存储引擎具有不同的特性,有时可能须要将一个已经存在的表的存储引擎转换成另外的一个存储引擎.有非常多方法能够完 ...