Java 运算符

android studio跑的程序。

基础知识
byte 1字节 8位
short 2字节 16位
int 4字节 32位
long 8字节 64位
float 4字节 32位
double 8字节 64位
char 2字节 16位(java采用unicode)

位运算符:按位与(&);按位或(|);异或(^);取反(~),左移(<<) ;右移(>>);无符号右移(>>>)。
位运算符是二进制操作。在操作位移符号(<<、>>、>>>)时,char、byte、short类型会自动提升为int类型。

代码

        int x = 2;
        Log.d(TAG, "x : " + Integer.toBinaryString(x));
        Log.d(TAG, "~x: " + Integer.toBinaryString(~x));
        int y = 1;
        Log.d(TAG, "onCreate: " + Integer.toBinaryString(x & y)); //1&1=1 0&1=0 0&0=0  10&01=00(位和位与)
        Log.d(TAG, "onCreate: " + Integer.toBinaryString(x | y)); //1&1=1 0&1=1 0&0=0  10|01=11(位和位或)   
        Log.d(TAG, "onCreate: " + Integer.toBinaryString(x ^ y)); //相同输出0 不同输出1 (位和位异或)

这里写图片描述


        int i = -1;
        Log.d(TAG, "onCreate: " + Integer.toBinaryString(i));
        //负数在计算机中的存储形式是其同值正数的补码
        //int 正1的原码是000000000000000000000001
        //int 正1的反码是(原码各位取反)11111111111111111111111111111110
        //int 正1的补码是(反码末位加1)11111111111111111111111111111111

        i = -2;
        Log.d(TAG, "i = -2 : " + Integer.toBinaryString(i));
        i = -3;
        Log.d(TAG, "i = -3 : " + Integer.toBinaryString(i));
        i = -4;
        Log.d(TAG, "i = -4 : " + Integer.toBinaryString(i));

这里写图片描述

        int i = 5;
        Log.d(TAG, "i : " + Integer.toBinaryString(i));
        Log.d(TAG, "i<<2: " + Integer.toBinaryString(i << 2));
        //i=5 i为int  00000000 00000000 00000000 00000101
        //向左移动两位 空位补0  00000000 00000000 00000000 00010100
        Log.d(TAG, "i>>2: " + Integer.toBinaryString(i >> 2));
        //向右移动两位 i为正数 空位补0  00000000 00000000 00000000 00000001
        i = -5;
        Log.d(TAG, "i=-5: " + Integer.toBinaryString(i));
        Log.d(TAG, "i=-5  i>>2: " + Integer.toBinaryString(i >> 2));
        //向右移动两位 i为负数 空位补1  11111111 11111111 11111111 11111110
        Log.d(TAG, "i=-5 i>>>2: " + Integer.toBinaryString(i >>> 2));
        //无符号右移两位 不管正负  空位补0  00111111 11111111 11111111 11111110

这里写图片描述

        byte b = -1;
        Log.d(TAG, "onCreate: " + Integer.toBinaryString(b));
        b >>>= 10;
        //byte为8位,这里用的Integer提升为32位(这里和位移符号的默认提升为int是两码事)
        //也就是11111111111111111111111111111111
        //无符号右移10 为 00000000001111111111111111111111
        //计算玩完赋值给byte b, byte 为八位 取后八位 首位是1 所以还为-1
        Log.d(TAG, "onCreate: " + Integer.toBinaryString(b));

这里写图片描述

       int i = 5;   
       Log.d(TAG, "i = -1 : " + Integer.toBinaryString(i<<34));
       //Think in Java 中有提到int类型只有右侧的5个低位有用(因为2的5次幂也就是32),这右侧的五个低位指的是34的五个低位,
       //34的二进制是00100010,也就是00010有用,00010的十进制为2所以移动两位。

       long l=5;
       Log.d(TAG, "i = -1 : " + Integer.toBinaryString(i<<67));
       //long为低6位。

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值