专栏首页Java识堂Java中的>>,>>>和<<

Java中的>>,>>>和<<

前言

我们都知道对于有符号数据类型,二进制最左端的数字为符号位,0代表正,1代表负,这里先介绍几个概念

逻辑左移=算术左移:高位溢出,低位补0 逻辑右移:低位溢出,高位补0 算术右移:低位溢出,高位用符号位的值补

比如一个有符号位的8位二进制数10101010,[]是添加的数字

逻辑左移一位:0101010[0] 逻辑左移两位:101010[00]

算术左移一位:0101010[0] 算术左移两位:101010[00]

逻辑右移一位:[0]1010101 逻辑右移两位:[00]101010

算术右移一位:[1]1010101 算术右移两位:[11]101010

算术左移和算术右移主要用来进行有符号数的倍增、减半 逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半

Java中是没有无符号数据类型的,C和C++中有

符号

例子

解释

<<

num<< n

算术左移

相当于 num*(2的n次方)

>>

num>>n

算术右移

相当于num/(2的n次方)

>>>

num>>>n

逻辑右移,当num为正数和算术右移一个效果

例子

public static void main(String[] args) {
    // 20
    System.out.println(10 << 1);
    // -20
    System.out.println(-10 << 1);
    // 5
    System.out.println(10 >> 1);
    // -5
    System.out.println(-10 >> 1);
    // 5
    System.out.println(10 >>> 1);
    // 2147483643
    System.out.println(-10 >>> 1);
}

本文分享自微信公众号 - Java识堂(erlieStar)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 上车时机已到--.NETCore是适应时代发展的雄鹰利剑

    随着 .NET Core 3.0-prevew7 的发布,开源社区的一支重要力量重要即将起飞;官方指出,该预览版为可能为最终版本,在很长一段时间内,.NETCo...

    梁规晓
  • 为什么项目中用了JOOQ后大家都不愿再用Mybatis?

    今天给大家介绍一个新的ORM框架->JOOQ,可能很多朋友还没有听说过这个框架,码农哥之前也是一直在使用Mybatis框架作为Java工程中的持久层访问框架,但...

    用户5927304
  • 听说优秀的程序员20%的时间都在写UT?

    在今天的文章中打算和大家聊一聊关于测试的话题,也许有朋友会问,作为一名码农为什么要关注测试的问题?我们把代码开发完基本自测没问题了,扔给测试不就行了?有问题再改...

    用户5927304
  • java 并发篇- 概念篇

    各位好,今天是我们并发篇正式开始的第一篇,既然我们大家学习并发,那么就要理解一些计算机概念最好,否则,知道怎么用而不知道名称是啥,概念含糊不清,以及不知道怎么设...

    haoming1100
  • Java 并发篇03 -序性、可见性、原子性。

    这篇文章,我们将给大家来讲解引起我们并发问题的三大因素--— 有序性、可见性、原子性。这三个问题是属于并发领域的所以并不涉及语言。

    haoming1100
  • 如何动手撸一个简单的LFU缓存

    关于第一种FIFO策略的实现,比较简单,可采用固定长度的数组和链表来处理,这里就不重点说了。今天我们的重点是LFU缓存的实现。

    我是攻城师
  • 如何测试概率型业务接口

    在我做接口测试的工作中,有段时间负责产品的每星期活动的接口测试,需求一般比较简单,但是有一批活动很特殊,在之前的工作中都没遇到过,就是概率型业务。常见的抽奖、随...

    八音弦
  • Java 并发篇-04.synchronized

    大家好,缓缓来迟的第 5 篇 并发内容,其实准备了好久了,因为想写点不一样的内容,结果导致托了一个月才准备好。在开始正文之前,继续来我们的几个灵魂问题:

    haoming1100
  • 【趣学程序】Java中的异常

    趣学程序
  • 你知道 OOM 常见原因吗?有什么好的解决方法?

    当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗...

    用户1516716

扫码关注云+社区

领取腾讯云代金券