변수들을 초기화 하고 다시 다음 테스트 케이스가 있다면 입력을 받아 위의 과정을 반복한다.
bit 연산
bit shift 연산
'>>'을 통해 bit를 오른쪽으로 움직여 명령어를 뽑아낸다
예를들어 11100001 >> 5 연산을 하면 오른쪽으로 5 bit shift하여 00000111이 된다.
& 연산
이는 && 연산과 다르다 &&는 bit 연산이 아닌 and 연산이다
&는 bit and 연산이다. 두 값이 모두 1인 경우에만 1이된다
이는 특정 부분의 숫자만 뽑아내기 위해서 자주 사용한다.
예를 들어 10101111이라는 숫자에 0x31을 & 연산하면
10101111
&00011111
=00001111
즉 맨 왼쪽 4자리만 뽑아내 주소만 뽑아낼 수 있다.
# 10진수 변환
2진수를 10진수로 변환하는 일반적인 방법 그대로르 사용하였다. 예를 들어 2진수 1001이 있다면 이는 12^3 + 02^2 + 02^1 + 12^0 = 9가 된다 이를 string으로 주어졌을 때 한 자리씩 끊어서 계산하였다.
# 2진수 변환
이도 일반적으로 사용하는 10진수->2진수 변환 법을 사용하였다 십진수를 2로 나눈 나머지를 가지고 하는 방법을 이용하였다. 10 2 | 0 5 2 | 1 2 2 | 0 1 2 | 1
=> 10=1010이 된다 이 방법에 8비트로 만들기 위해서 나머지 앞에 부분은 0으로 채워주었다.
# 음수 표현
프로그램을 돌리다 보니 가산기에 음수 값이 들어가는 경우가 있었다. 만약 음수인 상태로 프로그램이 종료 된다면 출력이 이상하게 될 것이다. 그래서 음수인 경우 2의 보수를 취하여 바꿔주었다. 예를 들어 -1이 있다면 '-'를 떼고 1만 본다 그러면 00000001이다. 여기에 1의 보수를 취하면 11111110이 되고 1을 더해주면 2의 보수인 11111111이 된다. 이게 바로 -1을 나타낸 것이다. ```