美文网首页
java 位移

java 位移

作者: SlowGO | 来源:发表于2019-02-11 16:37 被阅读2次

一、左移

<< 逻辑左移,右边补0,符号位和其他位一样移动。

在没有数字溢出的情况下,左移一位相当于✖️2的1次方,左移N位就相当于✖️2的n次方

例如:

1 << 4 
结果为:16

1 << 10
结果为:1024

3 << 10
结果为:3072,即为:3 x (1 << 10)

计算过程:

例如 1 二进制形式:

0000 0000 0000 0000 0000 0000 0000 0001

左移1位(1 << 1):

// 所有数字向左移动一位
// 最高位就相当于移除了,最后一位补0
0000 0000 0000 0000 0000 0000 0000 0010

结果为2(左移1位是2的1次方)。

左移2位(1 << 2):

0000 0000 0000 0000 0000 0000 0000 0100

结果为4(左移2位是2的2次方)。

二、右移

>> 右移,情况:

  1. 正数,高位补0
  2. 负数,高位补1

例如:

4 >> 1

4 的二进制为:
0000 0000 0000 0000 0000 0000 0000 0100
右移1位(正数,高位补0):
0000 0000 0000 0000 0000 0000 0000 0010
结果为:2

-4 >> 1

-4 的二进制为:
1111 1111 1111 1111 1111 1111 1111 1100
右移1位(负数,高位补1):
1111 1111 1111 1111 1111 1111 1111 1110
结果为:-2

右移1位就相当于一次➗2

>>> 无符号右移,因为是无符号的,所以不管正数还是负数,高位都补0。

例如:

-4 >>> 1

-4 的二进制为:
1111 1111 1111 1111 1111 1111 1111 1100
无符号右移1位(高位补0):
01111 1111 1111 1111 1111 1111 1111 110
结果为:2147483646

查看数字的二进制形式:

System.out.println(Integer.toBinaryString(-4));
// 如果是正数,前面的0都会省略,例如 '4',输出结果就为 ‘100’

相关文章

  • Java中的位移运算

    在Java中,位移运算属于基本运算,符号是<<和>>,即向左位移和向右位移。在Java中只有整数才能位移,所以其他...

  • java 位移

    一、左移 << 逻辑左移,右边补0,符号位和其他位一样移动。 在没有数字溢出的情况下,左移一位相当于✖️2的1次方...

  • Java基础系列之位移

    Java中的位移其实我们很少使用,但是大家一定要明白位移的原理

  • java位移操作

    十进制、二进制 十进制数在计算机中的表示方法,对于正数和负数是不一样的。负数:绝对值对应的二进制,取反码,将反码加...

  • java位移操作

    用移位操作可以极大地提高性能,对于乘除2^n(n为正整数)的正整数计算,可以用移位操作来代替。 int num1 ...

  • java位移运算总结

    (1)计算中负数都是以补码形式进行存储的; (2)计算机中数的运算都是补码方式参与运算; (3)正数的原码、反码、...

  • 一文搞明白位运算、补码、反码、原码

    在平时看各种框架的源码的过程中,经常会看到一些位移运算,所以作为一个Java开发者是一定掌握位移运算的。 正数位移...

  • Java基础知识--“位移”

    ** 文章摘要 **1、移位包括左移和右移。左移相当于乘法,右移相当于除法。2、右移包括带符号右移,无符号右移。 ...

  • 简要记录水平垂直居中方法!

    1、绝对定位 2、相对位移+transform位移 3、相对位移+transform位移+margin 4、相对位...

  • Java和Javascript中位移运算

    参考:https://www.cnblogs.com/thtlovelife/p/8664404.html ht...

网友评论

      本文标题:java 位移

      本文链接:https://www.haomeiwen.com/subject/dyiqeqtx.html