zoukankan      html  css  js  c++  java
  • java中的位运算符 >> ^ ~ & |

    大多数语言都提供了按位运算符,按位运算符在c,c++等语言中运用广泛,而在JS,AS等脚本语言中则没有太多的应用例子,有时候,适当的使用按位运算符会取得很好的效果。

    本文中所有示例,都为1字节8位,具体使用中位数因所使用的编程语言不同,而不同,java int型为4字节32位,位数不同会导致计算结果不同,请注意)。

    char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。
    char 16位2个字节
    byte 8位1个字节
    short 16位2个字节
    int 32位4个字节
    long 64位8个字节
    float 32位 4个字节
    double 64位8个字节

    按位运算符有6个
    & 按位与
    |按位或
    ^按位异或
    ~取反
    >>右移
    <<左移

    #与(&)运算

    与运算进行的是这样的算法:
    0&0=0,0&1=0,1&0=0,1&1=1

    #非(~)运算

    非运算即取反运算,在二进制中1变0,0变1
    110101进行非运算后为
    001010即1010

    #或(|)运算

    或运算进行的是这样的算法:
    0|0=0,0|1=1,1|0=1,1|1=1

     

    #异或(^)运算

    异或运算通俗地讲就是一句话
    同为假,异为真
    所以它是这样的算法:
    0^0=0,0^1=1,1^0=1,1^1=0


            0 1 0 0 0 0 0 1
            0 1 0 1 1 0 1 0
    产生 0 0 0 1 1 0 1 1

    #移位运算符移位运算符把位按指定的值向左或向右移动

    << 向左移动 而 >> 向右移动,超过的位将丢失,而空出的位则补0
    如 0 1 0 0 0 0 1 1(十进制67) 向左移动两位67<<2将变成
     0 0 0 0 1 1 0 0 (十进制12)当然如果你用java代码写,由于是32位,不会溢出,结果是268
    向右移动两位67>>2则是
    0 0 0 1 0 0 0 0(十进制16)


    原文链接:

    https://blog.csdn.net/zhaoyunfei1/article/details/95312550

    https://blog.csdn.net/chijiandi/article/details/79022473?fireglass_rsn=true

  • 相关阅读:
    (转)贝叶斯推理及应用
    (转)zero copy原理
    (转)c指针问题
    (转)c++ new/delete,new[]/delete[]原理解析
    (转)Spring AOP编程原理、Demo
    (转)spring IOC、DI理解
    Django小例子 – 模型数据的模板呈现
    初探Django Admin(一)
    Windows7下搭建Django运行环境
    初探Django线程发送邮件
  • 原文地址:https://www.cnblogs.com/baxianhua/p/12160547.html
Copyright © 2011-2022 走看看