[JAVA] 비트연산자

2022. 2. 6. 13:42·JAVA
728x90

비트연산자

  • 비트(bit) 단위로 논리 연산을 할때 사용하는 연산자
  • 기본적으로 컴퓨터는 8bit의 공간 기준으로 사용함 
  • 8bit == 1byte
  • 실수형을 제외한 모든 기본형에서 사용이 가능함
비트 연산자 설명
& 대응되는 비트가 모두 1이면 1을 반환함 (AND연산)
| 대응되는 비트중에서 하나라도 1이면 1을 반환 (OR연산)
^ 대응되는 비트가 서로 다르면 1을 반환 (XOR연산)
~ 비트를 1이면 0으로, 0이면 1로 반전 (NOT연산)
<< 지정한 수만큼 비트들을 전부 왼쪽으로 이동시킴 (LEFT SHIFT연산)
>> 부호를 유지하면서 지정한수 만큼 전부 오른쪽으로 이동시킴 (RIGHT SHIFT연산)

Bit연산 관련 메소드

Integer.toBinaryString

10진수나 16진수의 정수를 비트 단위의 문자열로 간단하게 바꿀수 있게 해주는 메소드

Integer.toBinaryString(0x12345678) //16진수
Integer.toBinaryString(2) //10진수
Integer.toBinaryString((byte) 30) //byte타입
  1. 16진수의 정수를 2진수로 변환 (결과 : 10010001101000101011001111000)
  2. 10진수의 정수를 2진수로 변환 (결과 : 10)
  3. byte타입 값을 2진수로 변환 (결과 : 11110)

Integer.bitCount

정수의 값을 비트단위로 변환한 후, 1의 개수를 카운트해서 구해줌

Integer.bitCount(30)
  1. Bit결과 값은 11110이며, 1의 개수가 4개이므로 결과가 4로 반환

AND 연산 (&)

두수 각자리수에 대해 둘다 1인 경우 1로 변환

int a = 8;
int b = 10;
System.out.println(Integer.toBinaryString(a)); //1000
System.out.println(Integer.toBinaryString(b)); //1010
System.out.println(Integer.toBinaryString(a & b)); //1000

OR 연산 (|)

두수 각자리수가 하나만 1이면 1로 변환

int a = 8;
int b = 10;
System.out.println(Integer.toBinaryString(a)); //1000
System.out.println(Integer.toBinaryString(b)); //1010
System.out.println(Integer.toBinaryString(a | b)); //1010

XOR 연산 (^)

두수 각자리수가 다른 경우 1로 변환

int a = 8;
int b = 10;
System.out.println(Integer.toBinaryString(a)); //1000
System.out.println(Integer.toBinaryString(b)); //1010
System.out.println(Integer.toBinaryString(a ^ b)); //10

NOT 연산 (~)

각 자리수를 반대로 변환

int a = 10;
System.out.println(~a); //10진수 반대, -11
System.out.println(Integer.toBinaryString(~a)); //2진수, 11111111111111111111111111110101

기본 리마인드 정리, 가끔 참고

저작자표시

'JAVA' 카테고리의 다른 글

[JAVA] 하이버네이트(HIBERNATE) DDL-AUTO 옵션 정리  (0) 2022.04.19
[JAVA] 어댑터 패턴  (0) 2022.04.06
[JAVA] PriorityQueue  (0) 2022.02.06
[JAVA] 람다표현식  (0) 2022.01.01
[JAVA] 제네릭  (0) 2021.12.15
'JAVA' 카테고리의 다른 글
  • [JAVA] 하이버네이트(HIBERNATE) DDL-AUTO 옵션 정리
  • [JAVA] 어댑터 패턴
  • [JAVA] PriorityQueue
  • [JAVA] 람다표현식
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    Elk
    이펙티브코틀린
    docker
    go
    엘라스틱서치
    splunk
    AWS
    이펙티브 코틀린
    JPA
    자바
    프로그래머스
    IntelliJ
    cleancode
    클린코드
    코틀린
    SQL
    java
    Spring
    Kafka
    ElasticSearch
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[JAVA] 비트연산자
상단으로

티스토리툴바