Java移位运算符详解实例(小结)

 更新时间:2019年12月12日 10:46:33   作者:华子AI  
这篇文章主要介绍了Java移位运算符详解实例(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

移位运算符它主要包括:左移位运算符(<<)、右移位运算符(>>>)、带符号的右移位运算符(>>),移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。

运算符 含义
<< 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)
>> "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1.
>>> "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0

1.左移运算符

左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方,例如下面的例子。

public class test{
 public static void main(String[] args) {
  int a=2,b=2,c;
  c=a<<b;
  System.out.print("a 移位的结果是"+c);
 }
}

输出结果:8

分析上面代码,2 的二进制是00000010,它向左移动2 位,就变成了00001000,即8。如果从另一个角度来分析,它向左移动2 位,其实就是乘上2 的2 次方,结果还是8

2.无符号右移运算符

右移运算符无符号用“>>>”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n 位,就相当于除上2 的n 次方

public class test{
 public static void main(String[] args) {
  int a=16;
  int b=2;
  System.out.println("a 移位的结果是"+(a>>>b));
 }
}

输出结果 :4

分析上面代码:16 的二进制是00010000,它向右移动2 位,就变成了00000100,即4。如果从另一个角度来分析,它向右移动2 位,其实就是除以2 的2 次方,结果还是4

3.带符号的右移运算符

带符号右移运算符用“>>”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1

public class test{
 public static void main(String[] args) {
  int a=16;
  int c=-16;
  int b=2;
  int d=2;
  System.out.println("a 的移位结果:"+(a>>b));
  System.out.println("c 的移位结果:"+(c>>d));
 }
}

输出结果: 4和-4

分析上面代码:a 的值是16转换成二进制是00010000,让它右移两位成00000100 即4,c 的值是-16转换成二进制是11101111,让它右移一位成11111011 即-4

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java中替代equals,compareTo和toString的方法

    Java中替代equals,compareTo和toString的方法

    这篇文章主要介绍了Java中替代equals,compareTo和toString的方法,文中代码十分详细,帮助大家更好的理解的学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java面向对象基础详解

    Java面向对象基础详解

    这篇文章主要介绍了JJava面向对象的基础,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-10-10
  • 详解Java枚举类在生产环境中的使用方式

    详解Java枚举类在生产环境中的使用方式

    本文主要介绍了Java枚举类在生产环境中的使用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • java数据结构与算法数组模拟队列示例详解

    java数据结构与算法数组模拟队列示例详解

    这篇文章主要为大家介绍了java数据结构与算法数组模拟队列示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • SpringBoot多环境配置及日志记录器详解

    SpringBoot多环境配置及日志记录器详解

    这篇文章主要介绍了SpringBoot多环境配置及日志记录器详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 在项目中直接使用hystrix的流程分析

    在项目中直接使用hystrix的流程分析

    最近由于一些背景原因,需要在项目中需要对接口进行限流。所以就考虑到了直接使用Hystrix,但是呢,又不想直接使用SpringCloud,而是直接引入原生,现在发现挺好用的,所以记录下来,需要的朋友参考下吧
    2022-06-06
  • springboot使用ThreadPoolTaskExecutor多线程批量插入百万级数据的实现方法

    springboot使用ThreadPoolTaskExecutor多线程批量插入百万级数据的实现方法

    这篇文章主要介绍了springboot利用ThreadPoolTaskExecutor多线程批量插入百万级数据,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • IDEA插件之彩虹括号Rainbow Brackets使用介绍

    IDEA插件之彩虹括号Rainbow Brackets使用介绍

    这篇文章主要为大家介绍了IDEA插件之彩虹括号Rainbow Brackets使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • SpringSecurity请求授权规则配置与注解详解

    SpringSecurity请求授权规则配置与注解详解

    这篇文章主要介绍了SpringSecurity请求授权规则配置与注解详解,我们常使用@Secured与@PreAuthorize两个注解在进入方法前进行角色、权限的控制,进入方法前数据的过滤@PreFilter注解偶尔会看到,需要的朋友可以参考下
    2023-12-12
  • java模拟post请求登录猫扑示例分享

    java模拟post请求登录猫扑示例分享

    这篇文章主要介绍了java模拟post请求登录猫扑的小示例,需要的朋友可以参考下
    2014-02-02

最新评论