비트연산자 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
5번째 줄: 5번째 줄:
  
 
== 특징 ==
 
== 특징 ==
=== 논리 연산자 ===  
+
=== 논리 연산자 ===
<ref name="비트연산자종류">〈[https://rockykim5581.tistory.com/19 비트 연산자의 종류]〉, 《김로키》</ref>
 
 
:{|class=wikitable width=1000 style="background-color:#ffffee"
 
:{|class=wikitable width=1000 style="background-color:#ffffee"
 
|+비트 연산자
 
|+비트 연산자
91번째 줄: 90번째 줄:
  
 
| 연산(논리합)은 2진수로 표현된 2개의 피연산자를 OR연산 하여 결과를 나타낸다. <br> OR 연산자는 대응되는 두 비트 중 하나라도 1이면 1을 반환하며, 두 비트가 모두 0일 때만 0을 반환한다. <ref name="논리연산자"></ref>
 
| 연산(논리합)은 2진수로 표현된 2개의 피연산자를 OR연산 하여 결과를 나타낸다. <br> OR 연산자는 대응되는 두 비트 중 하나라도 1이면 1을 반환하며, 두 비트가 모두 0일 때만 0을 반환한다. <ref name="논리연산자"></ref>
 
  
  
152번째 줄: 150번째 줄:
  
  
 
 
(예제)
 
  System.out.println(" 15 & 25 = " + (15 % 25));
 
  System.out.println(" 15 | 25 = " + (15 | 25));
 
  System.out.println(" 15 ^ 25 = " + (15 ^ 25));
 
  System.out.println(" ~25 = " + (~25)); <br>
 
  15 & 25 = 9
 
  15 | 25 = 31
 
  15 ^ 25 = 22
 
  ~25 = -26
 
  
  
  
=== 이동 연산자 ===  
+
=== 이동 연산자 ===
<ref name="비트연산자종류"></ref>
 
 
:{|class=wikitable width=1000 style="background-color:#ffffee"
 
:{|class=wikitable width=1000 style="background-color:#ffffee"
 
|+비트 연산자
 
|+비트 연산자
182번째 줄: 168번째 줄:
 
|-
 
|-
 
|align=center|>>>
 
|align=center|>>>
|align=center|(자바에만 존재)비트 값을 주어진 숫자 만큼 오른쪽으로 이동 시킨 후 빈공간을 모두 0으로 채운다
+
|align=center|(자바에만 존재)비트 값을 주어진 숫자 만큼 오른쪽으로 이동 시킨 후 빈공간을 모두 0으로 채운다(left shift 연산)
 
|}
 
|}
 
 
==== Left Shift 연산자 ====
 
''' << (left shift 연산)'''
 
 
<< 연산자는 두개의 피연산자를 요구하며 다음의 의미를 가진다.<br>
 
num 비트를 왼쪽으로 1칸씩 이동시킬 때마다 정수의 값은 2배가 된다.<br>
 
num 비트를 오른쪽으로 1칸씩 이동시킬 때마다 정수의 값은 2로 나누어진다.<ref name="이동연산자">〈[http://donologue.tistory.com/55 이동 연산자의 종류]〉, 《구운밤》</ref>
 
 
  << 연산결과
 
  int num1 = 3
 
  num1 << 2; // num1 의 결과 값 3의 비트열을 2칸 왼쪽으로 이동한다. //
 
  <br> num1 = 0000 0011
 
  num1 = 0000 1100 // num1 의 결과 값이 3에서 12로 변한다.//
 
 
==== Right Shift 연산자 ====
 
''' >> (right shift 연산)'''
 
 
>> 연산자는 두개의 피연산자를 요구하며 다음의 의미를 가진다.<br>
 
num1 >> num2 : num1의 비트 열을 num2칸씩 오른쪽으로 이동시킨 결과를 반환한다.<br> <ref name="이동연산자"></ref>
 
 
  >> 연산결과
 
  int num1 = 9
 
  num1 >> 2; // num1 의 결과 값 9의 비트열을 2칸 오른쪽으로 이동한다. //
 
  <br> num1 = 0000 1001
 
  num1 = 0000 0010 // num1 의 결과 값이 9에서 2로 변한다.//
 
 
''' >>> (right shift 연산)'''
 
 
>>> 연산은 오직 자바에만 있는 연산이며 >> 연산과 기본원리는 같다. 연산자에서 중요하게 볼 부분은 음수의 이동이다. >> 연산자일때 양수의 이동일 경우 자동으로 0이 채워지지만 음수일 경우에는 0을 채우는 경우와 1을 채우는 경우로 나뉘어진다.<br> 하지만 >>> 연산자는 맨 왼쪽에서 최상위 부호비트와 관계없이 무조건 0으로 채워지기 때문에 결과값은 무조건 양수로만 나타나게 된다.<ref name="이동연산자"></ref>
 
 
  >>> 연산결과
 
  int num1 = 9
 
  num1 >>> 2; // num1 의 결과 값 9의 비트열을 2칸 오른쪽으로 이동한다. //
 
  <br> num1 = 0000 1001
 
  num1 = 0000 0010 // 양수일때는 >> 연산과 결과값이 같게 나온다.// <br>
 
  int num1 = -9;
 
  num1 = num1 >>> 2;
 
  1073741821 // 음수일경우 이상한 값이 나온다. 그 이유는 빈자리를 0으로 채우기 때문이다.// <br>
 
  int num1 = 0;
 
  num1 = num1 >>> 2;
 
  -3 // 따라서 음수일 때는 -부호를 붙여 사용하면 된다.
 
  
 
{{각주}}
 
{{각주}}
231번째 줄: 175번째 줄:
 
== 참고자료 ==
 
== 참고자료 ==
 
* 비트 연산자, 〈[http://tcpschool.com/c/c_operator_bitwise 비트 연산자]〉, 《TCP SCHOOL》
 
* 비트 연산자, 〈[http://tcpschool.com/c/c_operator_bitwise 비트 연산자]〉, 《TCP SCHOOL》
* 비트 연산자의 종류,〈[https://rockykim5581.tistory.com/19 비트 연산자의 종류]〉, 《김로키》, 2015-11-22
 
 
* 논리 연산자, 〈[https://coding-factory.tistory.com/521 논리 연산자]〉, 《코딩팩토리》, 2020-04-19
 
* 논리 연산자, 〈[https://coding-factory.tistory.com/521 논리 연산자]〉, 《코딩팩토리》, 2020-04-19
* 이동 연산자, 〈[https://donologue.tistory.com/55 이동 연산자]〉, 《구운밤》, 2016-07-10
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==

위키원에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 위키원:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)