Java中的位运算符、移位运算详细介绍

 更新时间:2013年12月17日 16:45:12   作者:  
这篇文章主要介绍了Java中的位运算符、移位运算,有需要的朋友可以参考一下

一.位运算

Java中有4个位运算,它们的运算规则如下:

(1)按位与 (&) :两位全为1,结果为1,否则为0;

(2)按位或 (|) :两位有一个为1,结果为1,否则为0;

(3)按位取反(~):0 变 1, 1变0;


(4)按位异或(^):两位,如果相同,结果为0;如果不同,结果为1;

注意:

(1)位运算中的 符号位(最高位)也跟着变;

(2)位运算符与逻辑运算符(逻辑与&&、逻辑或||、逻辑非! )有点相似。但是,逻辑运算符只能操作boolean变量

(也就是左右两边的值都是boolean值);


二.位运算应用


(1) ~5 = ?

a) 5的补码为:

00000000 00000000 00000000 00000101

b) 5的按位取反(~)为:

11111111 11111111 11111111 11111010


注意:因为高位数是1(负数),所以要将该补码转换为原码;如果高位数是0(正数)的话, 就不用将补码转为原码,因为正数的原码、反码、补码都一样。

c) 将该负数的补码转为反码:

11111111 11111111 11111111 11111001


d) 将该负数的反码转为原码:

10000000 00000000 00000000 00000110


e) 将二进制原码 转换为 十进制:


10000000 00000000 00000000 00000110 = 0 * 2^0 + 1 * 2^1 + 1 * 2^2 = 0+2+4 = -6 (最高位为1,所以为负数)


三. 移位运算:

Java中有3个移位运算符。


(1) 算术右移 (>>): 低位溢出,符号位不变,并用符号位补溢出的高位;

例如:a >> b :a是要移动的数,b是要移动的位数,下面同理;


(2) 算术左移(<< ): 符号位不变,低位补0;


(3) 逻辑右移(>>>): 低位溢出,高位补0;注意:逻辑右移(>>>)中的 符号位(最高位)也跟着变;

四. 注意点:

位运算与移位运算,都是使用的二进制的补码,进行操作的,切忌!

相关文章

  • SpringBoot实现滑块验证码验证登陆校验功能详解

    SpringBoot实现滑块验证码验证登陆校验功能详解

    验证码作为一种自然人的机器人的判别工具,被广泛的用于各种防止程序做自动化的场景中。传统的字符型验证安全性已经名存实亡的情况下,各种新型的验证码如雨后春笋般涌现,今天给大家分享一篇SpringBoot实现滑块验证码
    2022-09-09
  • 如何用好Java枚举让你的工作效率飞起来

    如何用好Java枚举让你的工作效率飞起来

    在JDK1.5之前没有枚举类型,那时候一般用接口常量来替代,而使用Java枚举类型enum可以更贴近地表示这种常量,下面这篇文章主要给大家介绍了关于如何用好Java枚举让你的工作效率飞起来的相关资料,需要的朋友可以参考下
    2021-09-09
  • SpringBoot扩展外部化配置的原理解析

    SpringBoot扩展外部化配置的原理解析

    这篇文章主要介绍了SpringBoot扩展外部化配置的原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 基于java实现具有时效性文件链接

    基于java实现具有时效性文件链接

    这篇文章主要为大家详细介绍了如何基于java实现具有时效性的文件链接,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下
    2023-12-12
  • 使用Spring Boot创建Web应用程序的示例代码

    使用Spring Boot创建Web应用程序的示例代码

    本篇文章主要介绍了使用Spring Boot创建Web应用程序的示例代码,我们将使用Spring Boot构建一个简单的Web应用程序,并为其添加一些有用的服务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • springmvc @RequestBody String类型参数的使用

    springmvc @RequestBody String类型参数的使用

    这篇文章主要介绍了springmvc @RequestBody String类型参数的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • SpringMVC处理Form表单实例

    SpringMVC处理Form表单实例

    这篇文章主要介绍了使用SpringMVC处理Form表单实例,非常具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-10-10
  • Spring使用IOC与DI实现完全注解开发

    Spring使用IOC与DI实现完全注解开发

    IOC也是Spring的核心之一了,之前学的时候是采用xml配置文件的方式去实现的,后来其中也多少穿插了几个注解,但是没有说完全采用注解实现。那么这篇文章就和大家分享一下,全部采用注解来实现IOC + DI
    2022-09-09
  • MyBatis-Plus里面的增删改查详解(化繁为简)

    MyBatis-Plus里面的增删改查详解(化繁为简)

    这篇文章主要给大家介绍了关于MyBatis-Plus里面的增删改查的相关资料,Mybatis-Plus是一个基于Mybatis的增强工具,可以简化Mybatis的开发,提高开发效率,需要的朋友可以参考下
    2023-07-07
  • IDEA 2022 CPU占用100%的问题及解决方法

    IDEA 2022 CPU占用100%的问题及解决方法

    这篇文章主要介绍了IDEA 2022 CPU占用100%问题及解决方法,其实解决方法很简单,只需要禁用三个插件然后重启idea即可成功解决,需要的朋友可以参考下本文
    2022-08-08

最新评论