Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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_Operators_Bit Shift - Fatal编程技术网

什么是>&燃气轮机;你喜欢Java吗?

什么是>&燃气轮机;你喜欢Java吗?,java,operators,bit-shift,Java,Operators,Bit Shift,好吧,我试着查找>,或shift的意思,但正如本网站所解释的,这让我不知所措: 如果和一个孩子说话,会有什么解释呢?计算机是二进制设备。因此,数字由1和0的序列表示 位移位就是将1和0的序列向左或向右移动 因此,>运算符所做的就是将位向右移动一位 以101为例: // Assuming signed 8-bit integers 01100101 // How 101 is represented in binary 00110010 // After right shifting one bi

好吧,我试着查找
>
,或shift的意思,但正如本网站所解释的,这让我不知所措:


如果和一个孩子说话,会有什么解释呢?

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

位移位就是将1和0的序列向左或向右移动

因此,
>
运算符所做的就是将位向右移动一位

以101为例:

// Assuming signed 8-bit integers
01100101 // How 101 is represented in binary
00110010 // After right shifting one bit, this represents 50
本例中的最低有效位被截断。很明显,细节中有魔鬼,但这就是真正的问题所在


操作员将
右移

例如:

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

说明:

20
的二进制值为:
00000000000000000000010100

将所有位
2
位置向右移动
00000000000000000000000101


它将给出
5
1*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我曾经写过一篇文章,其中可以使用位运算符。您可以现场试用,也可以下载源代码。在C、C++和java中,它们的工作原理也可能类似于C语言。

实际上,它是除以二的,另一个是乘以二的。@ Joeri Hendrickx:对于整数,<代码> > >代码>实际上是两个除法相同(哪种方法取决于精确的格式)和<代码>链接断开。
5287
5287 = (5 * 1000) + (2 * 100) + (8 * 10) + (7 * 1)
5287 = (5 * 10^3) + (2 * 10^2) + (8 * 10^1) + (7 * 10^0)
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)
class X
      { 
       public static void main(String args[])
       {
         System.out.println("20>>2 = "+20>>2);
       }
      }        
   Base 10 : Base 2
   1 : 0001
   2 : 0010
   3 : 0011
   4 : 0100
   5 : 0101
   6 : 0110
   7 : 0111
   8 : 1000