zoukankan      html  css  js  c++  java
  • 算法基础

    进制

    16进制(0x)是1位数表示4位,如0x11二进制表示为00010001

    8进制(0)是1位数表示3位,如023二进制表示为010011

    2进制(无)

    位运算符

    & 与运算符:2个操作数 都为1,结果才为1,否则为0

    | 或操作符:。。。。。 只要有1个位1,结果就为1,否则为0

    ~ 非操作符:。。。。。 ~0=1;~1=0

    ^ 异或操作符:。。。。 位相同为0,位不同为1

    移位运算符

    左移运算符(<<):将运算符左边的对象,向左移动运算符右边指定的位数,并且低位补0

            向左移动n位,相当于(十进制)乘上2的n次方

    右移运算符(>>>):将运算符左边的对象,向右移动运算符右边指定的位数,并且高位补0

            向右移动n位,相当于(十进制)除上2的n次方

    带符号右移运算符(>>):将运算符左边的对象,向右移动运算符右边指定的位数

            如果是正数,在高位补0;如果是负数,在高位补1

    负数的二进制如何得出

    相信正数的二进制表示大家都懂,但是这个-4怎么来的?二进制编码中首位0代表负,1代表正。而4的二进制编码是00000000 00000000 00000000 00000100,那么轻而易举得出-4就是10000000 00000000 00000000 00000100,但是显然用计算机得出的结果并不是如此。下面讲如何转换。
    其实-4的二进制编码=4的补码,而 补码 = 源码取反+1
    先对 00000000 00000000 00000100取反后是11111111 11111111 11111111 11111011,取反后加1得11111111 11111111 11111111 11111100,正是最后结果。
    记住负数二进制其实是正数补码,即取反后加1所得。

    常用举例

    不用临时变量交换两个数:

    a ^= b;

    b ^= a;

    a ^= b;  

    //判断1个数的奇偶性
    boolean isOddNumber(int n){  
        return (n & 1) == 1;  
    }

    获取int最大值:

    (1 << 31) - 1;

    获取int最小值:

    (1 << 31)

    获取long最大值:

    ((long)1 << 127) - 1;  

    ((long)1 << 255) - 1;//这也可以

    最小值类似int

  • 相关阅读:
    语言模型的压缩方法
    推荐算法之 Slope One 算法
    基于内容的推荐(Contentbased Recommendations)
    Txt文件转换为Excel文件
    WebResource 内嵌资源
    多层模态窗口showModalDialog页面提交及刷新
    屏蔽/自定义JavaScript脚本错误
    .net动态显示当前时间
    客户端自动累加
    中国IT管理之窥豹一斑
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/5893100.html
Copyright © 2011-2022 走看看