음 10진수를 2진수로, 음 2진수를 10진수로
비트연산문제 중 진수간 변환에서 음수에서 자꾸 헷갈려서 기억차원에서 내가 이해하기 편하게 적음
< 10진수 (-3) 을 2진수로 >
1. -3 에서 부호를 뺀 절대값(3) 을 2진수로 만듦 -> .....0011
2. 비트반전 -> 1111......1100
3. 1을 더함(0001) -> 1111.......1101
==> -3은 2진수로 1111 1101 이다. (1 byte = 8 bit기준)
< 2진수 (1111 1101) 을 10진수로 >
1. 비트반전 -> 0000 0010
2. 1을 더함(0001) -> 0000 0011
3. 2의 제곱을 더해서 10진수로 만듦{ (1*1) + (1*2) } -> 3
4. 2진수에서 앞이 1111 이었으므로 음수. ( - ) 부호를 붙여줌 -> -3
==> 1111 1101은 10진수로 -3 이다.
※추가
< 2진수 (1111 1111 1111 0100) 을 10진수로 >
1. 비트반전 -> 0000 0000 0000 1011
2. 1을 더함(0001) -> 0000 0000 0000 1100
3. 2의 제곱을 더해서 10진수로 만듦 { (0*1) + (0*2) + (1*2*2) + (1*2*2*2) } -> 12
4. 2진수에서 앞이 1111 이었으므로 음수. ( - ) 부호를 붙여줌 -> -12
==> .... 1111 0100 은 10진수로 -12 이다.
10진수(절대값)를 2진수로 변환하는 방법
10진수의 숫자를 2로 몫이 1이 될때까지 계속 2로 나눈다. 2로 나눌 때마다 나머지를 2진수의 제일 오른쪽에서부터 채워넣는다. 그리고 몫이 1이 되면 나머지들로 이뤄진 숫자의 가장 왼쪽에 넣는다.
<10진수 (12) 를 2진수로>
12%2 = 몫 6 나머지 0
6%2 = 몫 3 나머지 0
3%2 = 몫 1 나머지 1
=> 10진수(12)를 2진수로 (1100)이다.
<10진수 (79)를 2진수로>
79%2 = 몫 39 나머지 1
39%2 = 몫 19 나머지 1
19%2 = 몫 9 나머지 1
9%2 = 몫 4 나머지 1
4%2 = 몫 2 나머지 0
2%2 = 몫 1 나머지 0
=> 10진수(79)를 2진수로 (1001111)이다.