728x90
반응형
n의 보수
더 했을 때 n이 되는 수
7의 '10의 보수' -> 3
3의 '7의 보수' -> 7
1의 보수
어떤 수를 커다란 2의 거듭제곱수에 -1을 하여 얻은 이진수
또는 비트를 반전시켜 얻을 수 있다.
1의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급된다.
주어진 이진수와 자리수가 같고 모든 자리가 1인 수에서 주어진 수를 뺴서 얻은 수가 1의 보수이다.
혹은 주어진 이진수의 모든 자리의 숫자를 반전(0 -> 1, 1 -> 0)시키면 1의 보수
ex) 101010 - > 010101
1의 보수 공식 => 입력 받은 이진수 값을 모두 반대로 바꾸어주면 된다.
코드 상으로 표현 : 1 - (해당 위치의 이진수 값) = x
2의 보수
어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수.
주어진 이진수보다 한 자리 높고 가장 높은 자리가 1이며 나머지가 0인 수에서 주어진 수를 빼서 얻은 수가 2의 보수
혹은 주어진 이진수의 모든 자리의 숫자를 반전 (0 -> 1, 1 -> 0)시킨뒤 1을 더하면 2의 보수
ex) 101010 - > 010101(1의 보수) - > 010110(2의 보수)
2의 보수 공식 => 변경된 1의 보수 값에 마지막 뒷자리에 1자리 올림 해준 값
Not연산(~)
이진수 값을 반대로.
ex) num = 1010 => ~num = 0101
2의 보수(-num) 1의 보수에 1을 더함
~num +1 = -num = 0110
원래수와 2의 보수를 &연산 하면 원래수의 마지막 1인 비트를 구할 수 있다.
num & -num = 0010
728x90
반응형
'개발노트 > Java' 카테고리의 다른 글
[Java] 예외 처리 (0) | 2021.04.02 |
---|---|
[Java] File Class (0) | 2021.03.19 |
[Java] method (0) | 2021.03.19 |
[Java] String Method (0) | 2021.03.17 |
[Java] 배열과 ArrayList (0) | 2021.03.17 |