zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    pytorch_基于cifar创建自己的数据集并训练
    Pytorch_3.8_多层感知机
    Pytorch_3.6_ SOFTMAX回归的从零实现
    Linux(debian)下的Python程序守护进程
    Ubuntu16.04安装OpenCV3.4.3
    Beaglebone black 安装docker
    电脑与虚拟机ping
    Beaglebone升级Python3.7过程
    多图上传预览
    放大镜代码
  • 原文地址:https://www.cnblogs.com/zgrey/p/14081168.html
Copyright © 2011-2022 走看看