Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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 两者之间的差异>&燃气轮机&燃气轮机;及>&燃气轮机;操作员_Java_Bit Shift - Fatal编程技术网

Java 两者之间的差异>&燃气轮机&燃气轮机;及>&燃气轮机;操作员

Java 两者之间的差异>&燃气轮机&燃气轮机;及>&燃气轮机;操作员,java,bit-shift,Java,Bit Shift,如果移位数为正数>>>和>>的工作方式相同 如果移位数为负数>>>则用1填充最高有效位,而>>操作将用0填充MSB 我的理解正确吗 如果负数存储时MSB设置为1,而不是Java使用的2s补码方式,则运算符的行为将完全不同,对吗?正好相反,如果h.o位为1,则>>>将用0填充,而>>将用1填充。正好相反,如果h.o位为1,则>>>用零填充,而>>用1填充。: n>>>s的值是n个右移位的s位,扩展为零。如果n为正,则结果与n>>s的结果相同;如果n为负,则结果等于表达式(n>>s)+(2s)+(2

如果移位数为正数>>>和>>的工作方式相同

如果移位数为负数>>>则用1填充最高有效位,而>>操作将用0填充MSB

我的理解正确吗


如果负数存储时MSB设置为1,而不是Java使用的2s补码方式,则运算符的行为将完全不同,对吗?

正好相反,如果h.o位为1,则>>>将用0填充,而>>将用1填充。

正好相反,如果h.o位为1,则>>>用零填充,而>>用1填充。

:

n>>>s
的值是n个右移位的s位,扩展为零。如果n为正,则结果与
n>>s的结果相同;如果n为负,则结果等于表达式
(n>>s)+(2s)+(2L:


n>>>s
的值是n个右移位的s位,扩展为零。如果n为正,则结果与
n>>s
的结果相同;如果n为负,则结果等于表达式
(n>>s)+(2s)的结果+(2L负数的表示方式称为2的补码。为了演示其工作原理,以-12为例。12在二进制中为00001100(假设整数为8位,但实际上它们要大得多).通过简单地反转每一位来取2的补码,得到11110011。然后,简单地加1得到11110100。请注意,如果再次应用相同的步骤,则得到正12

>>>不管怎样都会移位为零,所以12>>>1应该给你00000110,也就是6,(-12)>>>1应该给你01111010,也就是122。如果你真的在Java中尝试这个,你会得到一个更大的数字,因为Java int实际上比8位大很多


>>的移位位与最高位相同,因此正数保持正数,负数保持负数。12>>1是00000110(仍然是6)和(-12)>>1将是11111 010,即负6。

负数的表示方式称为2的补码。为了演示其工作原理,以-12为例。12在二进制中是00001100(假设整数是8位,但实际上它们要大得多).通过简单地反转每一位来取2的补码,得到11110011。然后,简单地加1得到11110100。请注意,如果再次应用相同的步骤,则得到正12

>>>不管怎样都会移位为零,所以12>>>1应该给你00000110,也就是6,(-12)>>>1应该给你01111010,也就是122。如果你真的在Java中尝试这个,你会得到一个更大的数字,因为Java int实际上比8位大很多


>>的移位位与最高位相同,因此正数保持正数,负数保持负数。12>>1是00000110(仍然是6)和(-12)>>1是11111010,是负6。

可能的重复:,可能的重复:,你能解释一下为什么
7>>>32=7
。我听说过循环移位,但我认为这只适用于
>
。32次移位后的
7>>>32
不等于零吗?@IanLimarta:如果左边是int,移位量是re在你的例子中,这意味着移位量是0,这实际上是不可操作的。你能解释一下为什么
7>>>32=7
。我听说过循环移位,但我认为它只适用于
>
。32次移位后的
7>>>32
不等于零吗?@IanLimarta:如果左边是int,移位量就是降低mod 32。在您的情况下,这意味着移位量为0,这实际上是一个禁止操作。请参阅