자바 비트연산자 예제

비트별 NOTing 임의의 숫자 x 수율 -(x + 1). 예를 들어 ~-5는 4를 산출합니다. JavaScript는 32비트 서명된 정수를 사용하므로 10을 반환하지 않습니다. -6을 반환합니다. 모든 비트 별 연산자의 피연산자는 서명되지 않은 32비트 정수를 초래하는 제로 채우기 오른쪽 시프트를 제외하고 두 개의 보체 형식으로 서명된 32비트 정수로 변환됩니다. 두 개의 보체 형식은 숫자의 음수 대응(예: 5 대 -5)이 모두 숫자의 비트가 반전된 것을 의미합니다(숫자의 비트가 아님, 일명 숫자의 보체) 1을 더한 값입니다. 예를 들어, 다음 인코딩 정수 314: 비트 하지, 또는 보완, 각 비트에 논리적 부정을 수행 하는 unary 작업, 주어진된 이진 값의 것 들의 보완을 형성. 0인 비트는 1이 되고 1인 비트는 0이 됩니다. 예: C-패밀리 언어에서 논리 시프트 연산자는 왼쪽 교대에 대해 „<<"이고 오른쪽 시프트의 경우 ">„입니다. 이동할 장소 수는 연산자의 두 번째 인수로 지정됩니다. 예를 들어 위의 예제에서는 4비트의 서명되지 않은 이진 번호를 사용합니다. 이 때문에 ~ 5 반환 10. 첫 번째 경우 가장 왼쪽 숫자는 레지스터의 끝을 지나 이동되고 새 0은 오른쪽 위치로 이동되었습니다.

두 번째 경우, 오른쪽 1은 (아마도 캐리 플래그로) 밖으로 이동하고, 새로운 1은 숫자의 기호를 유지, 왼쪽 번째 위치로 복사되었다. 여러 교대조가 일부 숫자로 단일 교대조로 단축되는 경우도 있습니다. 예를 들어 예제를 통해 이해해 보겠습니다. 두 정수: Java 프로그래밍 언어는 정수 형식에서 비트 및 비트 시프트 작업을 수행하는 연산자를 제공합니다. 이 섹션에서 설명하는 연산자는 덜 일반적으로 사용됩니다. 따라서, 그들의 범위는 간단하다; 의도는 단순히 이러한 연산자가 존재한다는 것을 알리는 것입니다. 여러 세트 플래그가 있는 비트 마스크는 „또는“과 같은 역할을 합니다. 예를 들어, 다음 두 가지는 동일합니다: 기계에는 산술 및 논리 연산을 수행하기 위한 효율적인 기본 제공 지침이 있지만, 이러한 모든 작업은 bitwise 연산자와 다양한 테스트를 결합하여 수행할 수 있습니다. 방법.

[13] 예를 들어, 여기에 두 임의 정수 a와 b (b보다 큰)를 곱하는 방법을 보여주는 고대 이집트 곱셈의 의사 코드 구현은 단지 비트 시프트 및 추가를 사용하여 : 서명되지 않은 정수의 비트 별 보완은 “ `미러 리플렉션`을 통해 서명되지 않은 정수 범위의 중간 지점에 걸쳐 있는 숫자입니다. 예를 들어, 8비트 서명되지 않은 정수의 경우 NOT x = 255 – x는 그래프에서 0에서 255까지의 증가 범위를 255에서 0으로 줄이는 범위를 효과적으로 „뒤집는“ 하향 선으로 시각화할 수 있습니다. 간단하지만 예시적인 사용 예는 각 픽셀이 부호 없는 정수로 저장되는 그레이스케일 이미지를 반전시키는 것입니다. JavaScript는 비트별 연산을 사용하여 두 개 이상의 단위가 각각 1 또는 0으로 배치되는 지 평가합니다. [12] 그러나 음수의 경우는 그렇지 않습니다. 예를 들어 -9 >> 2는 -9 >> 2(-3출력)와 다른 1073741821을 산출합니다. Java는 논리적 오른쪽 시프트를 수행하기 위해 연산자 „>>“를 추가하지만 논리 및 산술 왼쪽 시프트 연산은 서명된 정수에 대해 동일하므로 Java에는 „<<" 연산자가 없습니다.