• 进制捞位移


    一)茅塞顿开的东东哦:

    int类型占4个字节(byte);
    一个字节=8bit(位);
    一个int类型的数值占32bit(位)
    int i = 123;
    10进制123转为二进制后等于:1111011
    完整补位后:00000000 00000000 00000000 01111011
    1024字节 = 1KB

    二)二进制以及十进制之间的相互转换:

      java方法:Integer.toBinaryString(int); // 十进制转化为二进制

          Integer.parseInt("10110000000001001001011101001",2); // 多少进制转换为十进制。第一个参数为二进制字符串,第二个参数为这个字符串是多少进制的

      1111011: 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 123

      123:取余再倒上

    三)字节以及位以及范围,终于弄懂了好高兴

      注意这里的数列规律:2^0+2^1+2^2+2^3+2^4+2^5+2^6 = 2^7-1

      1字节为8位,所以1字节的范围为:[-127,127]

        1111 1111 = -(2^0+2^1+2^2+2^3+2^4+2^5+2^6) = -(2^7-1) =  -127

        0111 1111 = 2^0+2^1+2^2+2^3+2^4+2^5+2^6 = 2^7-1 = 127

            所以byte,short,int,long的长度分别为:2^0、2^1、2^2、2^3字节,8*2^0、8*2^1、8*2^2、8*2^3 位

    四)位与运算,位或运算,异或运算

      &:只有对应的两个二进制数为1时,结果位才为1

      |: 有一个为1的时候,结果位就为1

      ^:同则取0,异则取1

      0 & 0= 0  0 | 0= 0
      0 & 1= 0  0 | 1= 1
      1 & 0= 0  1 | 0= 1
      1 & 1= 1  1 | 1= 1

      3 & 2 = 0111 & 0010 = 0010 = 2

      3 ^ 5 = 0011 ^ 0101 = 0110 = 6

      规律:

        1)-1^(-1<<n) = 2^n-1

    五)二进制的最高位为符号位,1代表负数,0代表正数,其余位表示数的绝对值:

    )计算:

       *****因为位运算是CPU直接支持的,所以效率高*****

      正数高位为0,负数高位为1

      左移<<:正数负数都在右侧补0,负数最高位不变

      右移>>:正数补0,负数最高位不变,空位补1

      无符号右移:空位补0

      1)5 << 2:5的二进制左移两位

    5的二进制:0000 0000 0000 0101
    左移两位: 0000 0000 0001 0100

       2)5>>2:5的二进制右移两位

    5的二进制:0000 0000 0000 0101
    右移两位: 0000 0000 0000 0001
    

        3)-5>>2:-5的二进制右移两位(不是很懂)

    -5的二进制:1111 1111 1111 1011
    右移两位:  1111 1111 1111 1110

       面试题:

        1)用最有效率的方法计算2乘以8:

          常见的JDK源码里面HashMap的默认容量16:int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

        2)传递两个非0的int数值进去,实现变量交换的方式:

          关于异或运算符的规律:一个数与另一个数异或两次是其本身, 一个数和自身异或结果是0

            int a = 2; int b = 3;

          先:a = a^b;

          再:b = b^a; a = a^b

    参考:https://www.jianshu.com/p/927009730809

  • 相关阅读:
    P1093 奖学金
    华容道
    回文数
    P1654 OSU!
    Noip P1063 能量项链
    Noip 寻宝
    NOIP 2009 普及组 第三题 细胞分裂
    拦截器
    OGNL
    Struts2 配置详解
  • 原文地址:https://www.cnblogs.com/ericguoxiaofeng/p/12535985.html
Copyright © 2020-2023  润新知