본문 바로가기
Java & JSP

1의 보수, 2의 보수 활용한 비트 연산

by BeGeek 2017. 3. 7.
1의 보수(~num)는 이진수 0과 1을 반전시켜서 구할 수 있다.

num = 1010 이면 ~num = 0101

2의 보수(-num)는 1의 보수에 1을 더하면 구할 수 있다.

~num + 1 = -num = 0110

원래수와 2의 보수를 &연산하면 원래수의 마지막 1인 비트를 구할 수 있다.
num & -num = 0010

0010의 1은 원래수 1010의 마지막1인 비트이다

* Fenwick트리  구현할 때 활용해 보시라~

댓글