zoukankan      html  css  js  c++  java
  • Java中的移位操作符

    记住所有的移动位数,针对的都是补码来讲的,所以要先将十进制整数转换成补码后,然后再来进行移位操作

    移位操作 还要注意类型的约束条件,例如int,移动范围是0-31位,所以看补码只能看最后五位,这才是有效数字;long移动范围是0-63,所以补码只能看最后六位。

    右移操作符

    左位移操作符(<<):无论是有符号数还是无符号数,都低位补0。

    有符号右移位操作符(>>):用符号扩展,为正高位补0,为负高位补1。

    无符号小技巧:移位赋值

     

    i >>= 10;

     

    将i右移10位后的值再赋给i。等价于:i = i >> 10;。

     

    移位预处理

     

    char、byte、shor类型进行移位操作时,先会自动转换为int类型再移位。由于int类型只有32位,所以,当出现移位:

     

    i << 127;

     

    时,int型的i当然不会左移127位,而只会左移32位(32 = 2^5,127 = 1111 1111)。所以,int类型移位的时候,移位数只有低5位有效。同理,long类型移位时,移位数只有低6位有效。

    实例:

    public class Main {
    	public static void main(String[] args) {
    		System.out.println(1 << -2);
    		System.out.println(1 << 30);
    
    		System.out.println(1L << -2);
    		System.out.println(1L << 62);
    	}
    }

     

    1073741824
    1073741824
    4611686018427387904
    4611686018427387904


    int 是32位的,long 是64位的,移动负数位或者超过位数的应该取余数到 0~31, 0~63之间。

     

  • 相关阅读:
    java常用api
    常用命令
    mysql常用命令
    特性
    centos ubuntu 软件安装
    WebStorm创建Vue项目记录
    登录oracle官网下载资料账号可以使用(保存)(转)
    java学习之路—JDBC—DBUtils
    Linux从入门到精通(第4章--桌面环境)
    Linux从入门到精通(第2章--Linux安装)
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/4769577.html
Copyright © 2011-2022 走看看