zoukankan      html  css  js  c++  java
  • 去繁从简——理解java基本类型以及位运算符

    java中的基本类型

    一共有八个

    类型 字节 位数 存储量(2^bit)分正负
    byte 1 8 2^8 具体值 -2^7~2^7-1
    short 2 16 自己算
    int 4 32 自己算
    long 8 64 自己算
    float 4 32 浮点型底层结构与上面不同(别纠结)
    double 8 64 就知道贼大ok
    char 2 16 存的是Unicode码从 ‘000’~’FFFF’
    boolean ? ? 想知道就了解一下吧,我是不想纠结它了

    简单粗暴位运算

    不要看这么短的介绍,就这么短,就这么短,搞他就够了!

    位运算指的是对2进制数值的操作,位运算速度要高于普通运算符运算,这是因为普通运算的底层就是位运算

    简单粗暴,没啥不懂

    << 左移
    1 << 1 就是 0001 左移 1个位置
    0001 左移一个位置变成 0010
    那结果就自然是2了 
    重点来了 我们知道int的取值范围是-2^31~2^31-1
    1 << 31 = -2147483648;
    那么
    1 << 32 = ?
    上面讲到int4个字节 32位,那么现在你知道为什么了吗?
    自己再试试移动 64 96 ···· 看看结果
    看下面这个
    1L << 32 = ? 这是为什么你也明白了吧
    >> 右移
    1 >> 1 你觉得是多少?
    简单粗暴 等于0 为啥?
    因为右移之后就没有了,不同于左移
    & 位与运算
    1&1 = 同为1才为1 否则为0
    结果
    1&1 = 0001 & 0001 = 0001 = 1
    1&2 = 0001 & 0010 = 0000 = 0
    2&3 = 0010 & 0011 = 0010 = 2
    | 位或运算
    1|1 = 其中一个为1才为1 否则为0
    结果
    1|1 = 0001 | 0001 = 0001 = 1
    1|2 = 0001 | 0010 = 0011 = 3
    2|3 = 0010 | 0011 = 0011 = 3
    ^ 位异或运算
    1|1 = 相同为0 不同为1
    结果
    1|1 = 0001 | 0001 = 0000 = 0
    1|2 = 0001 | 0010 = 0011 = 3
    2|3 = 0010 | 0011 = 0001 = 1
    >>> 无符号右移
    暂时不懂,以后补上...
  • 相关阅读:
    T4 (Text Template Transformation Toolkit)
    GUI Design Studio
    51劳有所获 54务实青年
    [书目20110502]把时间当作朋友
    Rdlc子报表的动态添加
    [转]更新Android SDK到3.0版本时,遇到Failed to rename directory E:\android\tools to E:\android\temp\ToolPackage.old01问题
    JSON
    javascript 特征侦测技术
    IE的setAttribute bug
    将"类数组对象"转换成数组对象
  • 原文地址:https://www.cnblogs.com/lvgo/p/13275872.html
Copyright © 2011-2022 走看看