자바 비트연산자

2024. 2. 8. 23:22· Problem Solving/자바 문법
목차
  1. 비트 논리 연산자  & | ^ ~
  2. 비트 이동 연산자 <<, >>, >>> shift 연산자

 

 

비트 연산자는 말 그대로 비트 단위로 연산이 이루어지는 연산자이다.

'암호화' 작업처럼 임의의 숫자를 만든다거나, 메모리 용량이 부족할 때, 계산이 복잡해서 속도가 느려질 때 비트 연산자를 이용해서 빠른 속도로 계산을 할 수 있다. 데이터는 컴퓨터 내부에서 0과 1로 이루어져 있기 때문에, 0 또는 1로 표현할 수 있는 최소단위인 비트로 계산할 때 속도가 빠른 것이라고 이해할 수 있다.

비트 (bit) : 0 또는 1로 표현할 수 있는 최소 단위, 8비트가 모이면 1 바이트(Byte)가 된다.

비트 논리 연산자  & | ^ ~

& (AND) 연산자

두 개의 비트값이 모두 1인 경우에만 연산 결과 값이 1이 된다.

int num1 = 5;
int num2 = 10;
int result = num1 & num2;
    	num1 = 00000101
    &   num2 = 00001010
    ------------------------    
      result = 00000000

5 & 10 의 결과값은 0이다.

 

| (OR) 연산자

비트 값 하나라도 1이면 연산 결과 값이 1이 된다.

int num1 = 5;
int num2 = 10;
int result = num1 | num2;
    	num1 = 00000101
    |   num2 = 00001010
    ------------------------    
      result = 00001111

5 | 10 의 결과값은 15이다.

 

^ (XOR) 연산자

비트 값이 다르면 1, 같으면 0의 연산 결과 값을 가진다.

int num1 = 5;
int num2 = 10;
int result = num1 ^ num2;
    	num1 = 00000101
    ^   num2 = 00001010
    ------------------------    
      result = 00001111

5 ^ 10 의 결과값은 15이다.

 

~ (반전) 연산자

비트 값을 0은 1로, 1은 0으로 바꾸는 연산자

int num = 5;
int result = ~num;
 num = 00000101
~num = 11111010

위 경우는 부호비트가 1로 바뀌었기 때문에 음수 값으로 변경된다.

음수 값은 양수로 다시 변환해야 값을 알 수 있는데, 2진수 11111010을 10진수로 변환하면 6이 되고, 따라서 ~num1의 값은 -6이다.

 


비트 이동 연산자 <<, >>, >>> shift 연산자

<< 연산자

<< 시프트 연산자는 왼쪽으로 비트를 이동하는 연산자

int num = 5;
int shift = num << 2;
num = 00000101
num << 2 = 00010100

00000101 을 두 비트만큼 왼쪽으로 이동하라는 뜻

이 때, 앞 두자리 00은 없어지고 뒷부분이 0으로 채워진다.

따라서, 왼쪽으로 n 비트 이동한다는 것은 기존 값에 2ⁿ 만큼 곱한다는 뜻이다.

왼쪽으로 2비트 이동한 5는 00010100이 되어 5*2² = 20 이 된다.

 

>> 연산자

>> 시프트 연산자는 오른쪽으로 비트를 이동하는 연산자

int num = 5;
int shift = num >> 2;
num = 00000101
num >> 2 = 00000001

00000101 을 두 비트만큼 오른쪽으로 이동하라는 뜻

오른쪽으로 n 비트 이동한다는 것은 기존 값에 2ⁿ 만큼 나눈다는 뜻이다.

따라서 오른쪽으로 2비트 이동한 5는 00000001이 되어 5/2² = 1 이 된다.

 

>>> 연산자

>>> 시프트 연산자는 >> 연산자와 동일하게 비트를 오른쪽이로 이동하는 연산자

차이점은 >>> 연산자는 왼쪽에 채워지는 비트값이 부호 비트와 상관없이 무조건 0이 된다.

 

 

 

 

출처: https://heestory217.tistory.com/71

'Problem Solving > 자바 문법' 카테고리의 다른 글

배열과 리스트 feat.큐,덱  (0) 2024.03.06
BinarySearch중 parametric search  (0) 2024.02.27
HashSet vs TreeSet vs LinkedHashSet  (1) 2024.02.06
Collections 시간복잡도 정리  (1) 2024.02.06
HashMap vs LinkedHashMap  (0) 2024.02.06
  1. 비트 논리 연산자  & | ^ ~
  2. 비트 이동 연산자 <<, >>, >>> shift 연산자
'Problem Solving/자바 문법' 카테고리의 다른 글
  • 배열과 리스트 feat.큐,덱
  • BinarySearch중 parametric search
  • HashSet vs TreeSet vs LinkedHashSet
  • Collections 시간복잡도 정리
윤재에요
윤재에요
윤재에요
yunzae.log
윤재에요
전체
오늘
어제
  • 분류 전체보기 (435)
    • Computer Science (115)
      • 데이터베이스 (50)
      • 네트워크 (18)
      • 소프트웨어 공학 (1)
      • 알고리즘 (10)
      • 자료구조 (9)
      • 컴퓨터구조 (0)
      • 운영체제 (0)
      • 데이터 통신 (16)
      • 프로그래밍언어론 (11)
    • Project (20)
      • 후크(Flutter) (1)
      • BDSR로그북(App,BackEnd) (2)
      • 나만의 주점(STM32,Arduino,androi.. (9)
      • 공다(App,BackEnd) (2)
      • 카카오쇼핑 클론코딩 (4)
      • 암호화폐자동매매 (2)
    • Problem Solving (205)
      • 자바 문법 (20)
      • 파이썬 문법,함수 (6)
      • 그리디 (5)
      • 구현 (43)
      • DFS (3)
      • BFS (17)
      • 정렬 (15)
      • 이진 탐색 (16)
      • 다이나믹 프로그래밍 (6)
      • 최단 경로 (5)
      • 그래프 (1)
      • 자료구조 (5)
      • 투포인터 (15)
      • SQL (41)
      • 구간합 (7)
    • I leaned (78)
      • 스프링,스프링부트 (31)
      • Git (6)
      • JAVA (5)
      • Etc (30)
    • 취업 (15)
      • PT면접 (6)
      • 기술면접 (9)
      • 인성면접 (0)
    • log (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • Relationship model
  • 개미전사
  • 교환정렬
  • 데이터베이스
  • 플로이드 워셜
  • 다익스트라
  • 최단 거리
  • 계수정렬
  • 효율적인화폐구성
  • 카카오테크캠퍼스
  • 그리디
  • 다이나믹프로그래밍
  • 이것이코딩테스트다
  • 다이어그램
  • E-R Model
  • 참조 무결성
  • weak entity
  • 재시도
  • 제약 사항
  • 기수정렬
  • 이것이 코딩테스트다.
  • 먀
  • 부품찾기
  • 힙큐
  • DP
  • UML
  • 다이나믹
  • 파이썬
  • 최단거리
  • 이것이 코딩테스트다

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
윤재에요
자바 비트연산자
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.