解读JAVA中的位运算操作

 更新时间:2023年08月21日 17:11:16   作者:雨橄  
这篇文章主要介绍了JAVA中的位运算操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1、名词解释

首先,位移运算仅针对整数,非整数不支持位移运算。

  • ①<<:左移操作符,低位补0。
  • ②>>:算数右移符,高位补符号位。
  • ③>>>:逻辑右移符,高位补0。

如果对byte、short类型移位,在移位运算前,它们会先被转成int类型,且返回值也是int类型。

如果对long类型移位,则返回值也是long。

2、正负数换算

在java中最高位表示符号位,最高位0代表正数,最高位1代表负数。

用byte数据类型举例,byte占据8个二进制位:

01111111    正数(127)
11111111    负数(-1)

负数的换算方法

已知最高位为1,符号位不变,将其它位取反,然后+1即可得出对应负数。

以byte类型为例:
11111111    先取反->    10000000    再加1->    10000001    得出结果->    -1
10001111    先取反->    11110000    再加1->    11110001    得出结果->    -113
10101010    先取反->    11010101    再加1->    11010110    得出结果->    -86
10000001    先取反->    11111110    再加1->    11111111    得出结果->    -127

已知十进制负数,如何算出二进制原码

符号位不变,将剩下二进制位-1,然后取反即可得出原二进制码。

以byte类型为例:
-1        二进制->    10000001    再减1->    10000000    再取反得出结果->    11111111
-113    二进制->    11110001    再减1->    11110000    再取反得出结果->    10001111
-86        二进制->    11010110    再减1->    11010101    再取反得出结果->    10101010
-127    二进制->    11111111    再减1->    11111110    再取反得出结果->    10000001

3、位移运算演示

因为1字节的byte进行位运算时,会被自动转成4字节的int再进行运算,我们这里直接使用int类型进行演示,方便解读。

  • 演示壹 100<<2=400

  • 演示贰 15>>2=3

  • 演示叁 1325400064<<2=1006632960

  • 演示肆 -1895825408>>2=-473956352

  • 演示伍 -1895825408<<2=1006632960

  • 演示陆 -1895825408>>>2=599785472

4、拓展

~:二进制取反运算。

  • 演示 ~79=-80

&:二进制与运算

  • 演示 75&(-100)=8

|:二进制或运算

  • 演示 75|(-100)=-33

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IntelliJ IDEA基于Maven构建Java项目

    IntelliJ IDEA基于Maven构建Java项目

    在 Java 开发中,使用 Maven 是一种广泛采用的构建工具,本文主要介绍了IntelliJ IDEA基于Maven构建Java项目,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Spinrg WebFlux中Cookie的读写的示例

    Spinrg WebFlux中Cookie的读写的示例

    这篇文章主要介绍了Spinrg WebFlux中Cookie的读写的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 关于@Query注解的用法(Spring Data JPA)

    关于@Query注解的用法(Spring Data JPA)

    这篇文章主要介绍了关于@Query注解的用法(Spring Data JPA),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Spring Data JPA注解Entity使用示例详解

    Spring Data JPA注解Entity使用示例详解

    这篇文章主要为大家介绍了Spring Data JPA注解Entity使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Collection stream使用示例详解

    Collection stream使用示例详解

    这篇文章主要介绍了Collection stream使用示例,stream流几乎可以完成对集合的任意操作,映射、去重、分组、排序、过滤等
    2022-12-12
  • 详解Java8 StreamAPI中的map()方法

    详解Java8 StreamAPI中的map()方法

    Stream API 是Java8中新加入的功能,这篇文章主要带大家了解一下 Stream API 中的 map() 方法的使用,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-04-04
  • Spring Boot整合Web项目常用功能详解

    Spring Boot整合Web项目常用功能详解

    这篇文章主要介绍了Spring Boot整合Web项目常用功能详解,在Web应用开发过程中,可以通过Spring Boot的Starter来将这些常用功能进行整合与集中维护,以达到开箱即用的目的。,需要的朋友可以参考下
    2019-06-06
  • java实现模拟进度计量器

    java实现模拟进度计量器

    这篇文章主要为大家详细介绍了java实现模拟进度计量器,模拟血压计实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 基于Spring AOP proxyTargetClass的行为表现总结

    基于Spring AOP proxyTargetClass的行为表现总结

    这篇文章主要介绍了Spring AOP proxyTargetClass的行为表现总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springboot 如何解决cross跨域请求的问题

    springboot 如何解决cross跨域请求的问题

    这篇文章主要介绍了springboot 如何解决cross跨域请求的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论