자바의 정석 chap 2 변수

개발자 macan·2022년 8월 1일
0

개발 - 공부

목록 보기
26/28

chap 2.4 기본형(primitive type)

2.4.1 논리형 - boolean

  • 논리형의 종류는 boolean 한 가지!
    - true/false 중 하나를 저장하며 default = false
    - 대답, 스위치 등의 논리구현에 사용
    - 원래는 1 bit 만으로 충분하지만 자바의 경우 데이터의 최소단위가 byte 기 때문에
    1 byte의 크기를 갖는다.
    - 대소문자가 구분되기 때문에 False 와 false는 다르다.

2.4.2 문자형 - char

  • 문자형의 종류도 'char' 한 가지!
  • 문자를 저장하기 위한 변수 선언시 사용
  • 단 하나의 문자만을 저장할 수 있다!

char ch = 'A'
- 문자 'A'를 char 변수 ch에 저장
- 문자가 저장된 것이 아닌 '문자의 유니코드(정수)'가 저장된것! 
- A의 유니코드 65가 저장되었다. 
- '' 없이 65를 입력하면 동일한 결과를 얻는다.
- 변수에 저장된 값을 int로 변환하면 유니코드를 알 수 있다. 
- 특수문자는 \t 와 같이 '\'를 입력하여 저장한다.
- char 타입의 크기는 2 byte 2^16개의 코드 사용 가능하다.
  • 인코딩과 디코딩
    - 문자 -> 유니코드 : 인코딩
    • 유니코드 -> 문자 : 디코딩
    • ASCII
    • EXTENDED ASCII 와 한글
    • code page
    • Unicode

2.4.3 정수형 - byte, short, int, long

- byte 1 byte
- short 2 byte
- int 4 byte (기본 자료형)
- long 8 byte
  • 정수형의 표현형식과 범위
    - 정수형의 경우 맨처음 1비트는 S로 부호 비트를 말하고(양수는 0 음수는 1) n-1비트의 경우 타입의 크기를 말한다.

    • n 비트로 표현가능한 정수의 개수 : 2^n 개
    • 표현가능한 정수의 범위 : -2^n-1 ~ 2^n-1
  • 정수형의 선택기준
    - 정수형 변수를 선언시 Int 타입으로 하고, Int의 범위(+- 20억)을 넘을 경우 Long을 사용한다.

  • 정수형의 overflow
    - overflow : 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것

    • 10진수의 경우 4자리 표현일 경우 9999 다음의 10000을 표현할 수 없다.
    • 정수형 타입의 경우 최대값 +1 은 최소값이고 그 반대도 마찬가지이다.
    • 4bit 2진수의 경우 0000과 1111 사이를 반복한다.
  • 부호있는 정수의 overflow

    	- 부호있는 정수는 부호비트가 0에서 1이될 때 오버플로우가 발생한다. 

2.4.4 실수형 - float, double

  • 실수형의 범위와 정밀도

    	- float
    • double
  • 실수형의 저장형식

  1. 부호(sign bit)

  2. 지수(exponent)

  3. 가수(mantissa)

  • 부동소수점의 오차
    - 파이와 같은 무한소수의 존재로 실수는 오차가 발생할 수 있다.
    • 2진수로 저장하기때문에 10진수에서는 유한소수여도 2진수는 무한소수일 수 있다.
    • 정규화 : 2진수로 변환된 실수 저장시 '1.xxx * 2^n'의 형태로 변환하는 과정
      - 정규화된 2진 실수는 항상 '1.'으로 시작한다.
      -> 이 때문에 뒤의 23자리 소수부분이 가수(mantissa)로 저장되고 그 이후는 잘린다.
      따라서, 잘려나간 값에 의해 발생 가능한 최대 오차는 2^-23이다. 즉 10진수의 소수점 이하 6자리, 총 7자리가 float의 정밀도이다.
profile
개발자로 첫걸음

0개의 댓글