# 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)