Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 系统输出打印LN(16>;>;3)?_Java_Jvm - Fatal编程技术网

Java 系统输出打印LN(16>;>;3)?

Java 系统输出打印LN(16>;>;3)?,java,jvm,Java,Jvm,我试试代码 System.out.println(16>>3) 输出为2 但是这是如何工作的呢?语法是什么 您正在使用按位移位查询 在二进制中,每0是幂2的递增幅度,例如: 16 >>> 1 // returns 8 16 >>> 2 // returns 4 16 >>> 3 // returns 2 10000=16 01000=8 00100=4 00010=2 00001=1 java中的表达式16>>>3表示将位移到3个位置上,因

我试试代码

System.out.println(16>>3)

输出为2


但是这是如何工作的呢?语法是什么

您正在使用按位移位查询

在二进制中,每0是幂2的递增幅度,例如:

16 >>> 1 // returns 8
16 >>> 2 // returns 4
16 >>> 3 // returns 2
10000=16

01000=8

00100=4

00010=2

00001=1


java中的表达式16>>>3表示将位移到3个位置上,因此剩下2个位置。

您使用的是按位移位查询

在二进制中,每0是幂2的递增幅度,例如:

16 >>> 1 // returns 8
16 >>> 2 // returns 4
16 >>> 3 // returns 2
10000=16

01000=8

00100=4

00010=2

00001=1

java中的表达式16>>>3表示将位移到3个位置上,因此剩下2位。

这称为带零填充的右移位(也称为-无符号右移位)

为了便于理解,每次轮班时,您的数字都要除以2。因此:

16 >>> 3  ==  16 / 2^3 == 16 / 8 == 2
有关详细信息,请参阅

要实现真正的可视化,请查看两个数字的位表示:

16        - 00010000
16 >>> 3  - 00000010 == 2
这称为零填充右移(也称为-无符号右移)

为了便于理解,每次轮班时,您的数字都要除以2。因此:

16 >>> 3  ==  16 / 2^3 == 16 / 8 == 2
有关详细信息,请参阅

要实现真正的可视化,请查看两个数字的位表示:

16        - 00010000
16 >>> 3  - 00000010 == 2

>
运算符正在执行位的无符号右移,当应用于整数时,它具有除以2的效果。特别是,如果整数是2的幂,则每次右移正好是值的一半。例如:

16 >>> 1 // returns 8
16 >>> 2 // returns 4
16 >>> 3 // returns 2

在二进制形式中,
16
表示为
10000
。如果我们将该值向右移动三次,其结果为
00010
,即
2
。另外,请看一下Java。

运算符执行位的无符号右移,当应用于整数时,它具有除以二的效果。特别是,如果整数是2的幂,则每次右移正好是值的一半。例如:

16 >>> 1 // returns 8
16 >>> 2 // returns 4
16 >>> 3 // returns 2

在二进制形式中,
16
表示为
10000
。如果我们将该值向右移动三次,其结果为
00010
,即
2
。另外,请看一下Java。

16二进制格式是
00010000
。将位右移三个位置,结果是
00000010
为2

16,二进制为
00010000
。您将位向右移动三个位置,结果是
00000010
为2

这是一个位移动,它被2^3除(由于移动了3个位置)并截断(向下舍入),因为我们没有进行填充

当使用
>>
时,我们向右移动并分割。
当使用
时,这是一个位移位,它被2^3除(由于移位了3个位置)并截断(向下舍入),因为我们没有进行圆角

当使用
>>
时,我们向右移动并分割。 当使用
时,它是一个无符号右移运算符,上面的移位3次

i、 每次除以2,得到2

有关Java运算符的更多信息,请参阅。

这是一个无符号右移运算符,上面的移位3次

i、 每次除以2,得到2


有关Java运算符的更多信息,请参阅。

16>>3是向右的位移位,相当于除以8(2**3)


16>>3是向右的位移位,相当于除以8(2**3)


另请注意,3个V形符号表示无符号右位移位。虽然在这个例子中没有区别

额外的
表示该标志未保留,例如:

-128 >> 2 = -128 / 2^2 = -32
保留有符号位,给出:

(1) 10000000 >> 2 = (1) 100000 
11111111 11111111 11111111 10000000 >> 2 = 1111111 11111111 11111111 11100000
如果使用了
>
,则有符号位也会移位,将其转换为正数

-128 >>> 2 = 536870896

11111111 11111111 11111111 10000000 >> 2 = 0011111 11111111 11111111 11100000

另请注意,3个V形符号表示无符号右位移位。虽然在这个例子中没有区别

额外的
表示该标志未保留,例如:

-128 >> 2 = -128 / 2^2 = -32
保留有符号位,给出:

(1) 10000000 >> 2 = (1) 100000 
11111111 11111111 11111111 10000000 >> 2 = 1111111 11111111 11111111 11100000
如果使用了
>
,则有符号位也会移位,将其转换为正数

-128 >>> 2 = 536870896

11111111 11111111 11111111 10000000 >> 2 = 0011111 11111111 11111111 11100000


这很好地总结了位移位:除以2三次。但对于8的倍数,仅进行exct除法;我不太清楚所有的投票结果。在我看来,没有研究的迹象。我投了反对票。@delnan不相信这是重复票。这似乎是关于
>
运算符的另一个问题。@Duncan,这是“输出为2!”这让我很高兴。也许我需要更多的睡眠。这很好地总结了位的变化:除以2三次。但对于8的倍数,仅进行exct除法;我不太清楚所有的投票结果。在我看来,没有研究的迹象。我投了反对票。@delnan不相信这是重复票。这似乎是关于
>
运算符的另一个问题。@Duncan,这是“输出为2!”这让我很高兴。也许我需要更多的睡眠+1的ASCII艺术+1为ASCII艺术!我很想看看它会有什么不同的例子,负数会被2多倍化吗?试着用谷歌搜索一下,网上已经有很多例子了,即便如此。但基本上不,负数不乘以2。有符号位没有保留,因此它们变成了一些正值。例如,考虑有符号(32位)整数- 128:11111111,11111111,11111111,10000000。如果我们执行(-128>>>3),您将得到536870896。因为签名位被转换为0001111111111111111111111111111111111111100000足够公平,我更想暗示这会让你的答案非常棒,我会投票给它,但足够公平,我会继续向前移动,我想它不会真正回答你的问题:pMy问题?伊姆河