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
为216,二进制为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问题?伊姆河