>>在java中做什么?

好吧,我尝试查找>>或者移动意味着什么,但是这个方法在我的网站上解释了它: http : //www.janeg.ca/scjp/oper/shift.html

那么有人可以解释它就像他们正在和一个孩子说话吗?

计算机是二进制设备。 因此,数字由1和0的序列表示。

Bitshifting只是向左或向右移动1和0的序列。

因此,所有>>运算符都将位向右移一位。

考虑数字101:

 // Assuming signed 8-bit integers 01100101 // How 101 is represented in binary 00110010 // After right shifting one bit, this represents 50 

在这种情况下,最不重要的位被截断。 显然是细节中的魔鬼,但这就是真的。

<<运算符执行相反的操作:

 // Assuming signed 8-bit integers 01100101 // How 101 is represented in binary 11001010 // After left shifting one bit, this represents -54 // Assuming unsigned 8-bit integers 01100101 // How 101 is represented in binary 11001010 // After left shifting one bit, this represents 202 

在这种情况下,最重要的位被截断,因为我只使用了8位。 但是,如果数字有更多位,则:

 // Assuming signed 16-bit integers 00000000 01100101 // How 101 is represented in binary 00000000 11001010 // After left shifting one bit, this represents 202 00000001 10010100 // After left shifting one bit again, this represents 404 

因此,您可能会获得不同的数字,具体取决于与您正在处理的那些位相关联的位数和数据类型。

附录:如果您想知道二进制是如何工作的,请考虑十进制数系统的工作原理。 考虑数字5287.可以这样写:

 5287 

但是你也可以这样写出来:

 5287 = (5 * 1000) + (2 * 100) + (8 * 10) + (7 * 1) 

你可以写出这样的:

 5287 = (5 * 10^3) + (2 * 10^2) + (8 * 10^1) + (7 * 10^0) 

上面的等式解释了为什么十进制数系统有时被称为基数为10的系统。 十进制数系统使用10位数(0-9)。 注意指数如何对应于数字位置。

二进制数系统或base-2系统完全相同,但是数字2作为指数的基数,并且只使用两个数字:0和1。

 5287 = 00010100 10100111 (base 2) = (0 * 2^15) + (0 * 2^14) + (0 * 2^13) + (1 * 2^12) + (0 * 2^11) + (1 * 2^10) + (0 * 2^9) + (0 * 2^8) + (1 * 2^7) + (0 * 2^6) + (1 * 2^5) + (0 * 2^4) + (0 * 2^3) + (1 * 2^2) + (1 * 2^1) + (1 * 2^0) 

>> SHIFT RIGHT运算符

例:

 class X { public static void main(String args[]) { System.out.println("20>>2 = "+20>>2); } } 

输出: 20>>2 = 5

说明:

二进制值20为: 00000000000000000000000000010100

将所有位2位置移位到右00000000000000000000000000000101

它将给出52*2^2+0*2^1+1*2^0

我可以假设我正在谈论的孩子对二进制有所了解吗? 🙂

所有数字都可以用某种二进制表示,如下所示:

  Base 10 : Base 2 1 : 0001 2 : 0010 3 : 0011 4 : 0100 5 : 0101 6 : 0110 7 : 0111 8 : 1000 

… 等等。

移位运算符基本上将所有位(1或0)移动到一个位置。 所以,例如:000111 >> 1

将000111中的所有位右移一个数字以产生:

000011

000111 << 1

将所有这些位移一,产生这个:

001110

如果你移动多个,那么它只是进一步移动位。

现在,根据您使用的语言和您正在使用的数字类型,它可能会比这复杂一点。 例如,如果您使用的语言中“最重要的位”(数字中最左边的那个)表示数字是否已签名,则语言必须考虑到这一点。

从数学的角度来说,如果你取一个整数(并忽略由于计算机空间不足以存储位而导致溢出的风险),左移1(<< 1)相当于乘以2,并且移位1乘以相当于除以2.(想一想二进制数学中的“位值”值是多少,这样才有意义)

我曾经写过一个JApplet(bitorgel)并把它放在我的网页上 ,在那里可以玩位运算符。 您可以直播,也可以下载源代码。 AFAIK在C,C ++和Java中的工作方式相同 – 可能也在C#中。