zoukankan      html  css  js  c++  java
  • Java的位运算符——&0xFF的运算与讲解

    快放元旦假,没心思做啥的事,就去翻以前的代码遇到这句,但是又不懂,所以只好上网找,终于懂了那么一点点。

    所以那个大神看到我说的有问题,请指出!谢谢。。。。

     一:首先区分一下 A~F的意思先

    A,代表十进制的10,二进制的1010。
    B,代表十进制的11,二进制的1011。
    C,代表十进制的12,二进制的1100。
    D,代表十进制的13,二进制的1101。
    E,代表十进制的14,二进制的1110。
    F,代表十进制的15,二进制的1111。
    e
    二:区分
    &,丨,^的运算规则
    & (按位与运算符)表示:
    两个操作数中位都为1,结果为1
    如果两个操作中位一个1另一个0 ,结果为0
    即运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
    例如:1010 & 1110= 1010

    |(按位或运算符)表示:
    两个操作中位只有一个为1,结果就等与1
    即运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1

    例如: 1010 | 1111 =1111

    ^(异或 运算符)表示
    两个中位如果相同的数值,结果为 0,
    如果两个中位 数值不同,结果为1.
    即运行结果:同数值: 0^0=0;1^1=0;
    不同数值: 0^1=1; 1^0=1;

    例如:1010 ^ 1110 = 0100

     ~(取反运算符)表示:(这个我不太懂)
    参加运算的一个数据,按二进制位进行“取反”运算。
    即:对一个二进制数按位取反,即将0变1,1变0
    运算规则:~1=0; ~0=1;

    例如:使一个数的最低位为零,可以表示为:a&~1
    ~1的值为1111111111111110

      

     3:0x31 (一般看到0x==》16进制数)

           0x31计算: 先把0x31转换为 10进制的数  0x31(10)=16*3+1=49

             再把得到10进制转 2进制    49(2)=110001

      所以 0xFF 也是这样计算的  F==>表示15进制

            0xFF(10)= 16*15+15=255

             255 (2) = 11111111

       0x31  &  0xFF 的 计算 

       因为0xFF得出的结果 8个字节,而位数要相同,那么 0x31就要补0,因为在0x31的二进制为110001已经又6个字节了,那么再前面加两个0即可(这句其实我觉得我说的有点怪怪的)

      a): 0x31 &  0xFF

     = 00110001 &  11111111

     =00110001          

     =110001

     b):  0x31  |  0xFF 

      = 00110001  |  11111111

      =11111111 

     

  • 相关阅读:
    HDU 2853 (KM最大匹配)
    HDU 2852 (树状数组+无序第K小)
    HDU 2851 (最短路)
    HDU 2846 (AC自动机+多文本匹配)
    MyBatis使用示例
    Hessian示例:Java和C#通信
    SQL Server2005配置同步复制
    【问】如何应对关系型数据库中列的不断增加
    Prolog学习:数独和八皇后问题
    Prolog学习:基本概念
  • 原文地址:https://www.cnblogs.com/zhu520/p/8143688.html
Copyright © 2011-2022 走看看