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

  • 相关阅读:
    动态规划01背包
    动态规划矩阵连乘
    分治法归并排序
    动态规划最长公共子序列
    贪心算法活动安排
    分治法二分查找
    vue 可拖拽可缩放 vuedraggableresizable 组件常用总结
    rifilter in python discussed in 3delight
    3delight linear work flow
    pixar stereo rendering doc
  • 原文地址:https://www.cnblogs.com/xurui1995/p/5188170.html
Copyright © 2011-2022 走看看