zoukankan      html  css  js  c++  java
  • java移位操作符注意的问题

    如果对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;        //11111111
            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

  • 相关阅读:
    #Laravel笔记# 使用SMTP发送邮件功能
    #Laravel笔记# 监听事件
    idea 常见问题
    python常见函数汇总
    双DNN排序模型:在线知识蒸馏在爱奇艺推荐的实践
    机器学习算法GBDT
    Hive表数据同步到es
    目标检测资料
    zeppelin的介绍与使用
    Java汉字获取拼音、笔划、偏旁部首
  • 原文地址:https://www.cnblogs.com/xurui1995/p/5188170.html
Copyright © 2011-2022 走看看