[Kotlin] 자료형과 변수 (2) – 부동 소수점 이해

부동 소수점 이해

  • 32비트와 64비트의 부동 소수점 표현
    • -12.375(10)의 표현
      • 음수 : –
        • 127(bias) 기준으로 구분
      • 절댓값 : 12.375
        • 1100.011(2)
        • 1.100011 * 23
        • 1생략
        • 100011을 가수부에 표현
        •  -> 127 + 3 = 130(10) = 10000010(2)

IEEE 방식의 부동 소수점 제한

  • 공간 제약에 따른 부동 소수점 연산의 단점
fun main() {
var num: Double = 0.1

for( x in 0..999 ) {
Num += 0.1
}
println(num)
}

// 결과값 : 100.09999999999859

2의 보수란?

  • 자료형의 최소 최대
    • 음수는 2의 보수 표현을 사용해 연산된다.
      • 절댓값의 이진수에 값을 뒤집고 1을 더한다.
ex) -6
 – 6의 2진값: 0000 0110
 – 값 뒤집기 : 1111 1001
 – 1을 더하기 : 1111 1010
  • 왜? 제한된 자료형을 음수/양수로 나누어 최대한 사용하며 2의 보수는 가산 회로만으로 뺄셈을 표현할 수 있기 때문에

그 밖의 자료형

  • 논리 자료형
형식자료형크기값의 범위
논리형Boolean1비트True, False
val isOpen = true    // isOpen은 Boolean으로 추론
val isUploaded: Boolean    // 선언만 한 경우 자료형(Boolean)을 반드시 명시
  • 문자 자료형
형식자료형크기값의 범위
문자char2바이트(16비트)0~215-1(\u0000 ~ \uffff)
val ch = ‘c’    // ch는 Char로 추론
val ch2: Char    // 선언만 한 경우 자료형(Char)를 반드시 명시
  • 문자열
    • String으로 선언되며 String Pool이라는 공간에 구성한다.
Fun main() {
var str1: String = “Hello”
var str2 = “world”
var str3 = “Hello”

println(“str1 === str2: ${str1 === str2}”)    // false
println(“str1 === str3: ${str1 === str3}”)    // true
}

표현식에서 문자열

  • 표현식과 $ 기호를 사용하여 문자열 출력하기
var a = 1
val s1 = “a is $a”    // String 자료형의 s1을 선언하고 초기화. 변수 a가 사용됨

Leave a Comment