2014-05-11 3 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)'.I .getBytes (StandardCharsets.US_ASCII)'와는 다른 결과를 얻을 것입니다. – fge

+0

귀하의 참고서는 무엇을 말합니까? –

답변

1

<<은 시프트 연산자입니다. 비트 x 자리를 왼쪽으로 이동합니다. <<=은 시프트 연산자를 할당과 결합합니다. 따라서 val <<= 1val = val << 1과 같으며 val의 비트를 가져 와서 왼쪽으로 한 자리 옮깁니다.

+0

대단히 감사합니다! – user3370755

관련 문제