비트 조작
비트 가져오기
이 방법은 해당 비트를 0번째 위치로 이동합니다. 그런 다음 0001과 같은 비트 패턴을 가진 하나와 AND 연산을 수행합니다. 이렇게 하면 원래 번호에서 해당 비트를 제외한 모든 비트가 지워집니다. 해당 비트가 1이면 결과는 1이고, 그렇지 않으면 결과는 0입니다.
비트 설정
이 메서드는 bitPosition 비트만큼 1을 이동하여 00100처럼 보이는 값을 만듭니다. 그런 다음 특정 비트를 1로 설정하는 OR 연산을 수행하지만 숫자의 다른 비트에는 영향을 주지 않습니다.
클리어 비트
이 방법은 bitPosition 비트만큼 1을 이동하여 00100처럼 보이는 값을 생성합니다. 그보다 이 마스크를 반전하여 11011처럼 보이는 숫자를 얻습니다. 그런 다음 AND 연산이 숫자와 마스크 모두에 적용됩니다. 이 작업은 비트를 설정 해제합니다.
비트 업데이트
이 방법은 "비트 지우기"와 "비트 설정"방법의 조합입니다.
짝수이다
이 메서드는 제공된 숫자가 짝수인지 확인합니다. 홀수는 마지막 오른쪽 비트가 1로 설정된다는 사실에 기반합니다.
Number: 5 = 0b0101
isEven: false
Number: 4 = 0b0100
isEven: true
isPositive
이 방법은 숫자가 양수인지 확인합니다. 모든 양수에는 0으로 설정되는 맨 왼쪽 비트가 있다는 사실에 기반합니다. 그러나 제공된 숫자가 0 또는 음수 0이면 여전히 false를 반환해야 합니다.
Number: 1 = 0b0001
isPositive: true
Number: -1 = -0b0001
isPositive: false
2로 곱하기
이 방법은 원래 숫자를 왼쪽으로 1비트 이동합니다. 따라서 모든 이진수 구성 요소(2의 거듭제곱)에 2가 곱해지고 따라서 숫자 자체에 2가 곱해집니다.
Before the shift
Number: 0b0101 = 5
Powers of two: 0 + 2^2 + 0 + 2^0
After the shift
Number: 0b1010 = 10
Powers of two: 2^3 + 0 + 2^1 + 0
2로 나누기
이 방법은 원래 숫자를 오른쪽으로 1비트 이동합니다. 따라서 모든 이진수 구성 요소(2의 거듭제곱)는 2로 나누어지고 따라서 숫자 자체는 나머지 없이 2로 나뉩니다.
Before the shift
Number: 0b0101 = 5
Powers of two: 0 + 2^2 + 0 + 2^0
After the shift
Number: 0b0010 = 2
Powers of two: 0 + 0 + 2^1 + 0
스위치 사인
이 방법은 양수를 음수 및 역방향으로 만듭니다. 그렇게 하기 위해 숫자의 모든 비트를 반전하고 거기에 1을 더하는 "2개의 보수"접근 방식을 사용합니다.
1101 -3
1110 -2
1111 -1
0000 0
0001 1
0010 2
0011 3
두 개의 부호 있는 숫자 곱하기
이 메서드는 비트 연산자를 사용하여 두 개의 부호 있는 정수를 곱합니다. 이 방법은 다음 사실을 기반으로 합니다.
a * b can be written in the below formats:
0 if a is zero or b is zero or both a and b are zeroes
2a * (b/2) if b is even
2a * (b - 1)/2 + a if b is odd and positive
2a * (b + 1)/2 - a if b is odd and negative
이 접근 방식의 장점은 각 재귀 단계에서 피연산자 중 하나가 원래 값의 절반으로 감소한다는 것입니다. 따라서 런타임 복잡도는 O(log(b))입니다. 여기서 b는 각 재귀 단계에서 절반으로 감소하는 피연산자입니다.
참고문헌
https://github.com/trekhleb/javascript-algorithms/tree/master/src/algorithms/math/bits
Reference
이 문제에 관하여(비트 조작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/huyddo/bit-manipulation-50ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(비트 조작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/huyddo/bit-manipulation-50ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)