• Java位运算总结


    关于位运算,以前也见过,搜过,当时会用了,过后就忘了,今天好好学习一遍,然后整理一下。

    Java中的位运算,涉及到计算机的二进制,位用bit表示,1Byte=8bit,根据各种基本数据类型占用的字节空间,可以计算各种数据有多少二进制,可以算出对应的取值范围。

    java中的位运算包括:与(&)、或(|)、异或(^)和非(~);

         移位运算包括:左移运算(<<)、右移运算(>>)和无符号右移运算(>>>),没有无符号左移运算。

    前提:数字与数字位运算,都会先装换成二进制,下面不在重复,都默认转成二进制。

    1、与(&)运算,两个数字与运算就是对比相同位的数字,都为1则为1,否则为0.

      举例:3&4的值为多少?  3的二进制11,4的二进制100,没数字用0补齐,则是011对100,没有都为1的情况,则3&4的二进制结果为000,转换10

    进制也为0.

    2、或(|)运算,两个数字对比之后,有一个为1则为1。

      举例:3|4的值为多少? 011对100,结果为111,转换为10进制为7。

    3、异或(^)运算,对比之后,不同的为1,相同的为0。

      举例:3^4的值为多少?011对100,结果为111,转换为10进制为7。

    4、非(~)也叫取反运算,1变0,0变1。具体的变化这里设涉及到原码反码和补码,我单独写个帖子。 

    5、左移运算符(<<),将二进制的数据向左移动对应位数,低位用0补齐。

      举例:3<<1,11变为110,转换为10进制变为6。

    6、右移运算符(>>),将二进制的数据向右移动对应位数,如果是正数高位用0补齐,负数高位用1补齐。

      举例:3>>1,11变为1,转换为10进制变为1。-3>>1 为-2.

     7、无符号右移运算(>>>),将二进制的数据向右移动对应位数,高位全部用0补齐。

      举例:3>>>1,11变为1,转换为10进制变为1。-3>>>1 为2147483646。

  • 相关阅读:
    git处理冲突提交,撤销提交命令
    RocketMQ(4.7.0)单机与集群搭建,控制台搭建,并与springboot整合
    JVM进程的优雅关闭
    MySQL字段等值查询时,尾部有空格也能匹配上的坑
    带有连接池的Http客户端工具类HttpClientUtil
    比较两个jar包的版本号
    源码解读SLF4J绑定日志实现的原理
    log4j输出到控制台的性能问题
    多表查询
    分页优化
  • 原文地址:https://www.cnblogs.com/super-hu/p/11847529.html
Copyright © 2020-2023  润新知