• Java运算符(&)、(|)、(^)、(~)


    位异或运算(^)

    运算规则是:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。

    比如:8^11.

    8转为二进制是1000,11转为二进制是1011.从高位开始比较得到的是:0011.然后二进制转为十进制,就是Integer.parseInt("0011",2)=3;

    延伸:

    位与运算符(&)

    运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。

    比如:129&128.

    129转换成二进制就是10000001,128转换成二进制就是10000000。从高位开始比较得到,得到10000000,即128.

    位或运算符(|)

    运算规则:两个数都转为二进制,然后从高位开始比较,两个数只要有一个为1则为1,否则就为0。

    比如:129|128.

    129转换成二进制就是10000001,128转换成二进制就是10000000。从高位开始比较得到,得到10000001,即129.

    位非运算符(~)

    运算规则:如果位为0,结果是1,如果位为1,结果是0.

    比如:~37

    在Java中,所有数据的表示方法都是以补码的形式表示,如果没有特殊说明,Java中的数据类型默认是int,int数据类型的长度是8位,一位是四个字节,就是32字节,32bit.

    8转为二进制是100101.

    补码后为: 00000000 00000000 00000000 00100101

    取反为: 11111111 11111111 11111111 11011010

    因为高位是1,所以原码为负数,负数的补码是其绝对值的原码取反,末尾再加1。

    因此,我们可将这个二进制数的补码进行还原: 首先,末尾减1得反码:11111111 11111111 11111111 11011001 其次,将各位取反得原码:

    00000000 00000000 00000000 00100110,此时二进制转原码为38

    所以~37 = -38.

  • 相关阅读:
    css3阴影效果
    应该了解的9种CSS技巧
    position
    MyEclipse设置Java代码注释模板
    Struts2 常用的常量配置
    CSS 中文字体对应英文和Unicode编码
    MyEclipse使用前优化与配置
    MyEclipse 快捷键收集
    Ajax 调用WebServices之一 基本应用
    C#控制台显示进度条
  • 原文地址:https://www.cnblogs.com/zgrey/p/14081168.html
Copyright © 2020-2023  润新知