zoukankan      html  css  js  c++  java
  • 位运算基础

    我们知道计算机底层是二进制也就是0和1,00100101转为10进制的计算方式 1+021+1*22+023+0*24+1*25+0*26=37

    1个字节=8位元组(bit),最高位是符号位,0代表正1代表负。

    1.理论定义

    (1)二进制的最高位是符号位,0表示正数,1表示负数;

    (2)正数的原码、反码、补码都一样;

    (3)负数的反码=它的原码符号位不变,其它位取反(0->1 0->0);

    (4)负数的补码=它的反码+1;反码=补码-1;

    (5)0的反码补码都是0;

    (6)java没有无符号数,java中数都是有符号的;

    (7)在计算机运算的时候,都是以补码的方式来运算的,所以负数计算按位或,按位与,按位异或等都要先把十进制的负数取得补码以后再进行运算,同样,结果是负数元组(1********)的时候也要转成反码,再转成原码。

    2.位运算符和移位运算符:

    Java中有4个位运算,分别是“按位与&、按位或|、按位异或^、按位取反~”,它们运算规则:

    按位与&:两位全为1,结果为1;

    按位或|:两位有一个为1,结果为1;

    按位异或^:只有当相应位上的数字不相同时,该位才取1,若相同,即为0;

    按位取反~:0->1、 1->0

    3.Java中有三个移位运算符:
    算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
    <<算术左移:符号位不变,低位补0

    逻辑右移>>>:低位溢出,高位补0

  • 相关阅读:
    数据库——大事务
    数据库——性能理解
    java——通过GenericObjectPool获取到的资源,调用close()方法会close还是returnObject?
    gradle——入门
    MongoDB——morphia
    jvm——Java main方法的执行
    sql——limit
    阿里云Open API自动化脚本—ECS公网IP转化弹性公网IP
    阿里云共享带宽
    mysql5.x安装脚本
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832310.html
Copyright © 2011-2022 走看看