Kotlin | Java | 의미 |
---|---|---|
shr | >> | Right shift 연산 왼쪽 시프트 연산자 bit 값을 오른쪽으로 이동한다. 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킨다. 이동으로 인한 빈 자리는 부호 값으로 채운다. (음수인 경우 1, 양수인 경우 0) |
shl | << | Left shift 연산 오른쪽 시프트 연산자 bit 값을 왼쪽으로 이동한다. 지정한 수만큼 비트를 전부 왼쪽으로 이동시킨다. 이동으로 인한 빈자리는 0으로 채운다. |
ushr | >>> | bit 값을 오른쪽으로 이동한다. 지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이 된다. 이동으로 인한 빈자리는 0으로 채운다. (부호에 관계없이 항상 왼쪽에 0이 채워진다.) |
연산 수식 | 비트 값 | 출력 값 |
---|---|---|
5 | 00000101 | 5 |
5 shr 2 | 00000001 | 1 |
5 shl 2 | 00010100 | 20 |
5 ushr 2 | 00000001 | 1 |
음수의 이진 표현은 보수 표현을 사용한다. 보수 표현은 이진수를 표현할 때 첫 번째 비트가 부호를 나타내는데, 0이면 양수를 의미하고, 1이면 음수를 의미한다.
음수의 이진 표현은 해당 값의 양수 표현의 모든 비트를 반전한 후 1을 더한 것이다.
- -5를 8비트의 이진수로 표현하는 법
- 5의 이진 표현을 구한다. 00000101
- 이를 반전하면 11111010
- 여기에 1을 더한다. 11111011
연산 수식 | 비트 값 | 출력 값 |
---|---|---|
-5 | 11111011 | 251 |
-5 shr 2 | 11111110 | 254 |
-5 shl 2 | 11101100 | 354 |
-5 ushr 2 | 00111110 | 62 |