# 2의 보수와 바이트 ## 문제 2의 보수 표기법은 음의 정수를 이진수로 표현하기 위한 방법이다. ``` // 9 0000 1001 // -9 1111 0111 ``` 임의의 정수 **x**와 **x의 2의 보수**를 더하면 항상 0이 나온다. ``` 0000 1001 +) 1111 0111 ------------ 0000 0000 // 9 + (-9) = 0 ``` 주어진 뼈대코드의 결과 값이 출력 예와 같도록 코드를 수정하시오. ## 뼈대코드 ``` public class TwosComplement { public static void main(String[] args) { String[] tests = { "00101101", "11111101" }; for (String t : tests) { System.out.printf(" %s\n", t); System.out.printf("+) %s\n", getComplementBinaryStr(t)); System.out.println("-----------"); System.out.println(" 00000000\n"); } } private static String getComplementBinaryStr(String binaryStr) { byte decimal = (byte) (int) Integer.parseInt(binaryStr, 2); byte complement = (byte) -decimal; String compBinaryStr = Integer.toBinaryString(complement); return String.format("%32s", compBinaryStr).replace(' ', '0').substring(0); } } ``` ## 출력 예 ``` 00101101 +) 11010011 ----------- 00000000 11111101 +) 00000011 ----------- 00000000 ``` ## 힌트 + [byte 정수를 이진문자열로 변환하기](https://stackoverflow.com/questions/12310017/how-to-convert-a-byte-to-its-binary-string-representation)
관련 강의로 이동

코드: java 1.8

public class Main { public static void main(String[] args) { } }

입력

정답이 궁금하다면? 코드를 제출해보세요!