쫑's바른생활

[코딩 초보 개발일지] 자바_입문_03-1. 연산자, 단항연산자 본문

개발일지/입문

[코딩 초보 개발일지] 자바_입문_03-1. 연산자, 단항연산자

쫑이야기 2023. 4. 30. 00:03
728x90
반응형

<정의 알아보기>

  • 연산 : 데이터를 처리하여 결과를 산출하는 것
  • 연산자 : 연산에 사용되는 표시or기호
  • 피연산자 : 연산되는 데이터
  • 연산식 : 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것


(Java 연산자)

종류 연산자 피연산자 수 산술값 기능
산술 +, -, *, /, % 이항 숫자 더하기, 빼기, 곱하기, 나누기, 나머지 계산
부호 +,- 단항 숫자 양수/음수
문자열 + 이항 문자열 문자열을 연결
대입 =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= 이항 여러값 우변의 값을 좌변의 변수에 대입
증감 ++,-- 단항 숫자 1만큼 증가/감소
비교 ==, !=, >, <, >=, <=, 
instanceof
이항 boolean 값의 비교
논리 !, &, |, &&, || 단항,이항 boolean 논릴 NOT, AND, OR 연산
조건 (조건식) ? A : B 삼항 여러값 조건식에 따라 A 또는 B 중 하나를 선택
비트 ~, &, |, ^ 단항,이항 숫자, boolean 비트 NOT, AND, OR, XOR 연산
쉬프 >>, <<, >>> 이항 숫자 비트를 우측/좌측으로 밀어서 이동


<단항연산자>

피연산자가 하나뿐인 연산자

1. 부호 연산자(+, -)
2. 증감 연산자(++, --)
3. 논리 부정 연산자(!)
4. 비트 반전 연산자(~)


1.부호연산자
: 양수 또는 음수로 표현하는 연산자

2.증감연산자
: 값을 증가시키거나 감소시키는 연산자

(증감연산자 사용하기_순서알기)

연산식 설명
++ 피연산자 다른 연산을 수행하기   피연산자의 값을 1 증가시킴
-- 피연산자 다른 연산을 수행하기   피연산자의 값을 1 감소시킴
피연산자 ++ 다른 연산을 수행한   피연산자의 값을 1 증가시킴
피연산자 -- 다른 연산을 수행한   피연산자의 값을 1 감소시킴

 
3.논리부정연산자
: 값(논리true/false)을 부정하는 값(반댓값)을 도출하는 연산자

4.비트반전연산자
피연산자를 2진수로 표현했을 때 비트값을 변경(반전)하는 연산자.

정수 타입(byte, short, int, long)의 피연산자에만 사용됨
비트 반전 연산자의 산출 타입은 int 타입이 됨


(비트반전연산자 예시)

public class OperatorExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        b = ~a;
        
        System.out.println(a);
        System.out.println(b);
        
        b = ~b;
        
        System.out.println(b);
    }
}


비트를 반전하는 연산자가 쓰였으므로

step01. 10을 2진수로 변환하고 반전시켜야 한다.
int는 4byte=32bit 이므로 32칸의 2진수로 10을 변환하면
000 .... 1010 이 된다.

step02. 반전시킨다
111...0101 이 된다. 
여기서 중요한점! 비트반전연산자는 int타입으로 산출된다. 
int 타입은 가장 앞의 비트를 부호비트(양수=0/음수=1)로 본다.
그러나 컴퓨터는 음수를 표현할 수 없으므로,
우리는 2의보수연산(부호를 바꾸어 주는 연산방법)이라는
방법으로 산출값을 표현해야 한다.

 

728x90

step03. 2의보수연산 구하기1
보수란, 간단히 말하면 비트를 반전시키는 것이다.
2의보수연산은 바로 구할 수는 없다.
2의보수연산=1의보수+1 인데,
1의 보수=반전 이다.

따라서 아까 나온 
111 ... 0101 을 우선 1의보수로 구하면(반전하면)
000 ... 1010 이고, +1을 해주면
부호는 변하지 않은채 000 ... 1011 이 된다.

step04. 2의보수연산 구하기2
우리는 - 값을 표현하기 위해 일련의 과정들을 거쳤다.
2의 보수 연산을 통해 값을 구했지만,
컴퓨터가 표현할 수 있는 양수로 표현되어있다.
따라서 임의로 음수값(-)을 부여해준다.

산출은 int 타입이고 10진수로 바꾸면
000 ... 1011 = 11이다.
그리고 11에 음수값(-)를 붙여주면
10의 비트반전연산은 -11 이 된다.


ps. 솔직히 이 과정을 이해하지 못해도 된다.
어차피 비트반전연산자의 값을 산출하는 것은 컴퓨터이다.
우리는 컴퓨터가 어떻게 10의 비트반전연산자를 구하는지
그 과정을 이해하려고 하는 것일뿐이다.

다만, 욕심을 보태면 우리는 컴퓨터로 코딩을 하기 때문에
컴퓨터를 더 잘 이해한다면 코딩도 더 잘 이해할 수 있을 것이다.



끝!!

728x90
반응형
Comments