2014-05-11 159 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

相關問題