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

  • 相关阅读:
    DRF版本控制
    Django Rest Framework 视图和路由
    ModelSerializer
    linux下jdk安装与配置
    linux下各种安装包下载地址
    Creating mailbox file: 文件已存在
    vim常用设置
    zookeeper集群搭建与升级
    linux下shell 脚本 中windows换行符换成linux换行符
    spring注解
  • 原文地址:https://www.cnblogs.com/xurui1995/p/5188170.html
Copyright © 2011-2022 走看看