什么是二元运算符<<意思?

时间:2014-08-06 10:05:17

标签: java binary

在java中有>>,<<和>>>运算符。

根据Java doc

  

签名的左移运营商"<<&#;将位模式向左移动,   和签名的右移操作员">>"将位模式转换为   对。位模式由左侧操作数和   由右手操作数移动的仓位数。未签名的   右移运算符">>>"将零移动到最左边的位置,   而在">>"之后的最左边的位置取决于符号扩展。

我是二进制数据的新手,我发现这个解释有点模棱两可,没有例子或用例。 有人可以给我这些运营商的例子或用例吗?

谢谢,

3 个答案:

答案 0 :(得分:4)

Java Doc

  

签名的左移运营商"<<&#;将位模式向左移动,并使用带符号的右移运算符">>"将位模式向右移动。位模式由左侧操作数给出,位置数由右侧操作数移位。无符号右移运算符">>>"将零移动到最左边的位置,而在">>"之后的最左边的位置取决于符号扩展。

答案 1 :(得分:2)

    public class Test {

      public static void main(String args[]) {
         int a = 60;    /* 60 = 0011 1100 */  
         int b = 13;    /* 13 = 0000 1101 */
         int c = 0;

         c = a << 2;     /* 240 = 1111 0000 */
         System.out.println("a << 2 = " + c );
    //this will shift the binary version of a to two bits left side and insert zero in remaining places
         c = a >> 2;     /* 215 = 1111 */
         System.out.println("a >> 2  = " + c );
    //this will shift the binary version of a to left by two bits right  insert zero in remaining places
         c = a >>> 2;     /* 215 = 0000 1111 */
         System.out.println("a >>> 2 = " + c );
//this will shift the binary of a to 3bits right  insert zero in remaining places
      }
    } 

答案 2 :(得分:1)

我们有十进制和二进制的以下数字:

8 = 0000 1000

15 = 0000 1111

10 = 0000 1010

然后我们使用&lt;&lt;运营商,我们有以下结果:

8&lt;&lt; 1 - &gt; 0001 0000 = 16

15&lt;&lt; 2 - &gt; 0011 1100 = 60

10&lt;&lt; 1 - &gt; 0001 0100 = 20

如您所见,运算符将数字的二进制表示移动右数操作数给出的位数。这样做,您获得一个新号码。