'<<' 연산자의 경우, 피연산자의 부호에 상관없이 자리를 왼쪽으로 이동시키며 빈칸을 0으로 채우면 되지만, '>>' 연산자는 오른쪽으로 이동시키기 때문에 음수인 경우 부호를 유지시켜주기 위해서 음수인 경우 빈자리를 1로 채우게 된다. 반면에 '>>>' 연산자는 부호에 상관없이 항상 0으로 빈자리를 채운다. 그렇기 때문에, 음수에 '>>>'연산을 행한 후, 10진수로 변환해 보면 뜻밖의 결과를 얻게 될 것이다. '<<', '>>' 연산자와 달리 '>>>' 연산자의 결과는 10진수 보다는 2진수로 표현했을 때 기호로서 더 의미를 가지므로, 10진 연산보다는 비트연산(2진 연산)에 주로 사용된다.
곱셈이나 나눗셈 연산자를 사요하면 같은 결과를 얻을 수 있는데, 굳이 쉬프트 연산자를 제공하는 이유는 속도 때문이다. 예를 들어 '8 >> 2'의 결과는 '8 / 4'의 결과와 같다. 하지만, '8 / 4'를 연산하는데 걸리는 시간보다 '8 >> 2'를 연산하는데 걸리는 시간이 더 적게 걸린다. 다시 말하면, '>>' 또는 '<<' 연산자를 사용하는 것이 나눗셈 '/' 또는 곱셈 '*' 연산자를 사용하는 것 보다 더 빠르다.
수식
자리이동
연산결과
2진수
10진수
8 >> 0
없음
00000000 00000000 00000000 00001000
8
8 >> 1
오른쪽으로 한번
00000000 00000000 00000000 00000100
4
8 >> 2
오른쪽으로 두번
00000000 00000000 00000000 00000010
2
-8 >> 0
없음
11111111 11111111 11111111 11111000
-8
-8 >> 1
오른쪽으로 한번
11111111 11111111 11111111 11111100
-4
-8 >> 2
오른쪽으로 두번
11111111 11111111 11111111 11111110
-2
수식
자리이동
연산결과
2진수
10진수
8 << 0
없음
00000000 00000000 00000000 00001000
8
8 << 1
왼쪽으로 한번
00000000 00000000 00000000 00010000
16
8 << 2
왼쪽으로 두번
00000000 00000000 00000000 00100000
32
-8 << 0
없음
11111111 11111111 11111111 11111000
-8
-8 << 1
왼쪽으로 한번
11111111 11111111 11111111 11110000
-16
-8 << 2
왼쪽으로 두번
11111111 11111111 11111111 11100000
-32
수식
자리이동
연산결과
2진수
10진수
8 >>> 0
없음
00000000 00000000 00000000 00001000
8
8 >>> 1
오른쪽으로 한번
00000000 00000000 00000000 00000100
4
8 >>> 2
오른쪽으로 두번
00000000 00000000 00000000 00000010
2
-8 >>> 0
없음
11111111 11111111 11111111 11111000
-8
-8 >>> 1
오른쪽으로 한번
01111111 11111111 11111111 11111100
2147483644
-8 >>> 2
오른쪽으로 두번
00111111 11111111 11111111 11111110
1073741822
쉬프트 연산자보다 곱셈 나눗셈 연산자를 주로 사용하고, 보다 빠른 실행속도가 요구되어지는 곳에만 쉬프트 연산자를 사용하자. 프로그램의 실행속도도 중요하지만 프로그램을 개발할 때 코드의 가독성(readability)도 중요하다. 쉬프트 연산자가 속도가 빠르긴 해도 곱셈이나 나눗셈 연산자보다는 가독성이 떨어 질 것이다. 자바가 느리다고는 하지만 특수한 목적의 프로그래밍을 제외하고는 속도가 크게 문제되지 않는다.