Posts ☕️ [Java] 30일 안에 기초 떼기/ DAY-06
Post
Cancel

☕️ [Java] 30일 안에 기초 떼기/ DAY-06

◻️ DAY-06


챕터비트 연산자
3-2비트 연산자
Quiz연습문제풀이



◻️ 비트 연산자란?


  • 비트 단위의 연산을 하는 경우는 암호화 작업처럼 임의의 숫자를 만들거나, 어떤 변수의 특정 비트를 꺼내보는(마스킹; masking) 경우에 사용
  • 하드웨어에 내장되는 임베디드 시스템 프로그램에서 메모리 용량이 부족하거나 계산이 복잡할 때 연산 속도를 빠르게 하기 위해 사용할 수 있다
  • Java에서는 프로그램에서 특정 값을 만들거나 연산할 때 비트연산자를 사용한다



비트 논리 연산자

  • 비트 단위로 &, |, ^, ~ 연산이 이루어진다.


& 연산자

  • &(AND) 연산자는 두 개의 비트 값이 모두 1인 경우에만 연산 결과값이 1이 된다(논리곱과 비슷)
1
2
3
int num1 = 5;               // 2진수 변환: 00000101  
int num2 = 10;              // 2진수 변환: 00001010
int result = num1 & num2;   // num1,num2를 2진수로 변환한 뒤 각 바이트값을 비교하여 결과값을 출력한다= 00000000


l 연산자

  • |(OR) 연산자는 두 개의 비트 값 중 하나라도 1인 경우에는 연산 결과값이 1이 된다(논리합과 비슷)


^ 연산자

  • ^(XOR) 연산자는 같은 값이면 0, 다른 값이면 1의 결과값을 가진다


~ 연산자

  • ~(반전) 연산자는 0은 1로, 1은 0으로 바꾸는 연산자이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
 * Date: 2021-05-12
 * Author: Yon
 * Project: [자바 초보탈출 30일]
 * Section: 06일차
 * Subject: "비트연산자 &, ^, |, ~"
 */


  // 비트연산자 연습해보기

package section_03.bit_operator;

public class bit_operator1_1 {
    public static void main(String[] args) {
        int num1 = 5;                   // 2진수 변환값: 00000101
        int num2 = 10;                  // 2진수 변환값: 00001010
        
        int result = num1 & num2;       // &: 둘 다 1일 경우에만 1 출력
        int result2 = num1 | num2;      // |: 둘 중 하나라도 1이면 1 출력
        int result3 = num1 ^ num2;      // ^: 같은 값이면 0, 다른 값이면 1
        int result4 = ~num2;            // ~: 0은 1로, 1은 0으로

        System.out.println(result);     // &
        System.out.println(result2);    // |
        System.out.println(result3);    // ^
        System.out.println(result4);    // ~
    }
}

🚩비트연산자 실습 Commit 내역



비트 이동 연산자

  • 비트 이동 연산자<<, >>, >>> 3가지가 있다
  • 이를 시프트(Shift) 연산자라고도 부른다


<< 연산자

  • « 시프트 연산자는 왼쪽으로 비트를 이동하는 연산자이다
1
2
int num = 5;    // 2진수 변환:         00000101
num << 2;       // 왼쪽으로 2 비트이동: 00010100


>> 연산자

  • » 시프트 연산자는 오른쪽으로 비트를 이동하는 연산자이다
1
2
int num = 5;    // 2진수 변환:           00000101
num << 2;       // 오른쪽으로 2 비트이동: 00000001


>>> 연산자

  • » 시프트 연산자는 오른쪽으로 비트를 이동하는 연산자이다.
  • 왼쪽에 채워지는 비트 값이 부호 비트와 상관없이 무조건 0 이된다.


연산자 우선순위

  • 단항 연산자의 우선순위가 가장 높고, 이항, 삼항 연산자 순이다
  • 대입 연산자의 우선순위가 가장 낮다
  • 산술, 관계, 논리, 대입 연산자 순서로 우선순위를 가지며 ( )의 우선순위가 가장 높다



챕터3 퀴즈풀이 커밋리스트

🚩Do it! Java 프로그래밍 입문 Chapter 03 Quiz(88page ~ )

This post is licensed under CC BY 4.0 by the author.