>Java >java지도 시간 >Java의 비트 연산자 및 시프트 연산에 대한 자세한 소개

Java의 비트 연산자 및 시프트 연산에 대한 자세한 소개

高洛峰
高洛峰원래의
2016-12-16 16:59:011778검색

1. 비트 연산

자바에는 4비트 연산이 있습니다. 해당 연산 규칙은 다음과 같습니다.

(1) 비트별 AND(&): 두 비트가 모두 1입니다. 1이고, 그렇지 않으면 0입니다.

(2) 비트별 OR(|): 두 비트 중 하나가 1이고, 그렇지 않으면 0입니다. 비트 음수(~): 0은 1로 변경, 1은 0으로 변경

(4) 비트 XOR(^): 두 비트가 동일하면 결과는 0입니다. 다르면 결과는 1입니다.


참고:

(1) 비트 연산의 부호 비트(가장 높은 비트)도 변경됩니다.

(2) 비트 연산자 및 논리 연산자(논리 AND &&, 논리 OR ||, 논리 NOT!)는 다소 비슷합니다. 단, 논리 연산자는 부울 변수

에만 연산을 수행할 수 있습니다(즉, 왼쪽과 오른쪽의 값은 부울 값입니다).

2. 비트 연산의 적용


(1) ~5 = ?


a) 5의 보수는 다음과 같습니다.

00000000 00000000 00000000 00000101

b) 비트 단위 5(~)의 부정은

11111111 11111111 11111111 11111010

참고: 상위 숫자가 1(음수)이므로 보완 코드를 원래 코드로 변환해야 합니다. ; 상위 숫자가 0(양수)인 경우 원래 코드, 보완 코드 및 양수의 보완 코드가 동일하므로 보완 코드를 원래 코드로 변환할 필요가 없습니다.


c) 음수의 보수를 역코드로 변환:

11111111 11111111 11111111 11111001

d) 음수의 보수를 역코드로 변환 원본 코드 :


10000000 00000000 00000000 00000110

e) 이진수 원본 코드를 십진수로 변환:


10000000 00000000 000000 00 00000110 = 0 * 2^ 0 + 1 * 2^1 + 1 * 2^2 = 0+2+4 = -6 (가장 높은 비트는 1이므로 음수입니다)


3.


자바에는 3개의 시프트 연산자가 있습니다.

(1) 산술 오른쪽 시프트(>>): 낮은 비트가 오버플로되고 부호 비트는 변경되지 않으며 오버플로된 높은 비트는 부호 비트로 채워집니다. 예: a >> ; b: a는 이동할 숫자, b는 이동할 자릿수, 아래에도 동일하게 적용됩니다.


(2) 산술 왼쪽 시프트(< ;< ): 부호 비트는 변경되지 않고, 낮은 비트는 0으로 채워집니다.

(3) 논리적 오른쪽 이동(>>>): 낮은 비트는 오버플로되고, 높은 비트는 다음으로 채워집니다. 0; 참고: 논리적 오른쪽 시프트(>>>)의 기호도 그에 따라 변경됩니다.
4. 참고:


비트 연산 및 시프트 연산 모두 연산에 이진 보수를 사용하므로 피하십시오!

Java의 비트 연산자와 시프트 연산에 대한 자세한 소개 및 관련 글은 PHP 중국어 홈페이지를 참고해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.