2017-11-25 3 views

답변

0

150 바이트의 비트 -128의 관점에서 1001 0110 같음 도와주세요 여기

ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
    DataOutputStream out = new DataOutputStream(bout); 
    try { 
     out.writeInt(150); 
     byte[] b = bout.toByteArray(); 
     System.out.println(Arrays.toString(b)); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

내 출력된다 : 여기

내 코드 가장 왼쪽 비트) 플러스 2 + 4 + 16 = -1012

0

int 150을 out이라고 쓰십시오. 이진 (특히 two's complement가)이 정수는 다음과 같다에서 :

0000 0000 0000 0000 0000 0000 1001 0110 

8 비트의 각 그룹은 byte 데이터 유형과 유사한 1 바이트의 데이터이다. 그러나 모든 Java 정수 유형 (char 제외)과 마찬가지로 byte이 서명됩니다. 따라서 마지막 byte의 이진 값이 1001 0110이더라도 -106으로 표시됩니다.이 값은 2의 보수로 해당 바이트의 올바른 값입니다. 인쇄 명세서를 다음으로 대체 할 수 있습니다.

String[] strings = new String[b.length]; 
for (int i = 0; i < b.length; i++) { 
    strings[i] = Integer.toString(Byte.toUnsignedInt(b[i])); 
} 
System.out.println("[" + String.join(", ", strings) + "]"); 

부호없는 형식으로 바이트를 인쇄합니다. 각각은 범위 [0, 255]에있을 것이다.