• 17_10_11 运算符&,&&,>> 和 >>>


    有符号数:---- ---- :高位:0代表正数 1代表负数

    没有说代表:无符号数

    负数 = 负数的绝对值按位取反+1
    负数按位取反+1 =负数的绝对值
    

    反码,补码,原码参考

    &和&&: 0&0=0 0&1=0 1&0=0 1&1=1

    3&5=? 先把3和5以补码表示,再进行按位与运
    3的补码: 00000011 
    5的补码: 00000101 
    所以:3&5=0000 0001=1
    
    等比数列求和公式
    Sn=a1.(qn-1)/(q-1)   a1=1;q-1=1 q=2 简化为:Sn=2n-1
    
    1111 1111:=2^8-1=255
    
    1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0=
    128+64+32+16+8+4+2+1=255
    

    1.都可以表示逻辑与 的 运算符;区别->if(a0&b0) 要执行完括号 而 if(str!=null&&!str.equals("")) 有短路效果,当str为空时不执行&&后面的判断,从而避免NllPointerException

    2.&用于获取整数的高四位或者低四位:

    public static int getHeight4(byte data){//获取高四位
        int height;
        height = ((data & 0xf0) >> 4); f0(十六进制) = 11110000(二进制)
        return height;
    }
    
    public static int getLow4(byte data){//获取低四位
        int low;
        low = (data & 0x0f);0f(十六进制) = 00001111(二进制)
        return low;
    }
    
    

    >>:

    右移,如果该数为正,则高位补0,若为负数,则高位补1;

    >>>:

    无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。

    << :

    左移运算符,表示将exp1向左移动exp2位,在低位补0。其实,向左移动n位,就相当于乘以2^n。

    左移没有<<<运算符

    result = exp1 >> exp2;
    result = exp2 >>> exp2;
    表示把数exp1向右移动exp2位。
    例如:
    res = 20 >> 2; 
    20的二进制为 0001 0100,右移2位后为 0000 0101,则结果就为 res = 5;
    res = -20 >> 2;
    -20的二进制为其正数的补码加1在位移
    
  • 相关阅读:
    后端框架:SpringBoot+Mybatis+Dubbox(zookeeper+dubbo-admin)
    java代码执行mysql存储过程
    SpringBoot整合Junit
    摘要算法之MD5
    java如何控制下载的文件类型是txt还是doc?如何将文件名返回给前端?Content-disposition
    Android Atuido 连接模拟器
    verilog CRC 校验
    Altium Designer(AD软件)如何导出gerber文件
    SpringBoot集成mybatisplus
    C++ | 通过智能指针实现资源管理
  • 原文地址:https://www.cnblogs.com/du1991/p/7649804.html
Copyright © 2020-2023  润新知