초안 |
잔글편집 요약 없음 |
||
| 72번째 줄: | 72번째 줄: | ||
[[JAVA]]<br> | [[JAVA]]<br> | ||
<code>int r = Integer.rotateRight(x, n)</code> | <code>int r = Integer.rotateRight(x, n);</code> | ||
2025년 9월 30일 (화) 17:33 기준 최신판
비트 연산(bitwise operation)이란 어떤 수 하나나 둘에 대해 비트 단위로 적용되는 연산이다.
기본[편집]
NOT[편집]
NOT 연산은 모든 비트의 값을 반전하는 연산이다.
JAVA
int r = ~x;
AND[편집]
AND 연산은 두 값의 각 자리를 비교해, 두 곳 모두에 1일 때에만 1을, 아닐 때에는 0으로 표시한다.
JAVA
int r = x & y;
OR[편집]
OR 연산은 두 값의 각 자리를 비교해, 두 곳 중 하나라도 1이라면 1을, 아닐 때에는 0으로 표시한다.
JAVA
int r = x | y;
XOR[편집]
XOR 연산은 두 값의 각 자리를 비교해, 두 곳의 값이 같다면 1을, 같지 않다면 0으로 표시한다.
JAVA
int r = x ^ y;
비트 시프트[편집]
ASL[편집]
ASL(산술적 좌측 시프트/Arithmetic Shift Left) 연산은 모든 비트의 값을 한자리씩 좌측으로 옮기는 연산이며, 남은 자리는 0으로 채운다. 결과적으로 LSL과 같다.
(수에 2의 n승을 곱한 것과 같다.)
JAVA
int r = x << n;
ASR[편집]
ASR(산술적 우측 시프트/Arithmetic Shift Right) 연산은 모든 비트의 값을 한자리씩 우측으로 옮기는 연산이며, 남은 자리는 원래의 부호값으로 채워진다. (양수일 때 0, 음수일 때 1)
(음수를 2의 n승으로 나눈 것과 같다. 나머지는 버린다)
JAVA
int r = x >> n;
LSL[편집]
LSL(논리적 좌측 시프트/Logical Shift Left) 연산은 모든 비트의 값을 한자리씩 좌측으로 옮기는 연산이며, 남은 자리는 0으로 채운다. 결과적으로 ASL과 같다.
(수에 2의 n승을 곱한 것과 같다.)
JAVA
int r = x << n;
LSR[편집]
LSR(논리적 우측 시프트/Logical Shift Right) 연산은 모든 비트의 값을 한자리씩 우측으로 옮기는 연산이며, 남은 자리는 0으로 채운다.
(수를 2의 n승으로 나눈 것과 같다. 나머지는 버린다)
JAVA
int r = x >>> n;
ROL[편집]
ROL(왼쪽으로 회전/Rotate Left)은 비트의 자리수를 우측으로 n만큼 회전시킵니다.
JAVA
int r = Integer.rotateLeft(x, n);
ROR[편집]
ROR(오른쪽으로 회전/Rotate Right)은 비트의 자리수를 우측으로 n만큼 회전시킵니다.
JAVA
int r = Integer.rotateRight(x, n);