2014-05-11 124 views
-3

所以,我看到这个代码ASCII转换成二进制:Java中`<< ='的用途是什么?

String s = "foo"; 
byte[] bytes = s.getBytes(); 

StringBuilder binary = new StringBuilder(); 
for (byte b : bytes) 
{ 
    int val = b; 
    for (int i = 0; i < 8; i++) 
    { 
     binary.append((val & 128) == 0 ? 0 : 1); 
     val <<= 1; 
    } 
    binary.append(' '); 
} 
System.out.println("'" + s + "' to binary: " + binary); 

在这种情况下,什么是<<=运营商呢?此代码如何构建s的二进制表示?

+2

阅读[按位和移位运算符](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html)。 – nhaarman

+0

和二进制是什么?什么“二元表示”是?请注意,你'.getBytes()'没有指定编码;如果我'.getBytes(StandardCharsets.UTF_16)'我会得到不同的结果,如果我'.getBytes(StandardCharsets.US_ASCII)'。 – fge

+0

你的参考书说它有什么作用? –

回答

1

<<是一个移位运算符。它将位x位移到左边。 <<=将换档操作员与分配组合在一起。因此val <<= 1val = val << 1相同,它取val的位并将它们向左移一位。

+0

非常感谢! – user3370755

相关问题