>>Signed와 Unsigned의 차이
먼저 signed와 unsigned의 차이는 부호가 있냐 없냐의 차이입니다. 부호비트로 1비트를 사용하기 때문에 범위의 차이도 생깁니다.
4비트짜리를 표현하려고 할 때 signed는 -2^3~2^3-1 unsigned는 0~2^4까지 표현이 가능합니다.
>>Unsigned를 쓰는 이유
컬럼의 효율성을 목적으로 한다고 함.
200이란 숫자를 표현하기 위해서 언사인드는 1바이트면 충분하지만 사인드는 1바이트로 충분하지 않다.
>>Java에 Unsigned 자료형이 없는 이유 (추측)
자바의 아버지인 제임스고슬링이 이렇게 말을 했다고 한다.
“C 개발자들에게 unsigned 에 대해한번 물어보세요. unsigned 어떻게 되고, 연산이 어떻게이루어지는지 제대로 이해하고 있는 개발자가 거의 없다는 걸 바로 알 수 있을 겁니다”
즉, 사용자 편의를 위한 언어인 자바에서 signed와 unsigned 두 자료형이 존재하게 될 경우 일어나는 실수를 방지하고자 만들지 않았다고 추측.
또한 자바 자체 API인 BigDecimal등을 이용해서 C보다 더 큰 숫자를 표현 할 수 있는 방법을 제공해 주기 때문에 굳이 unsigned를 지원할 필요가 없다고 생각한건 아닐까요.
BigInteger나 BigDecimal은 숫자를 문자로 처리하여 큰 숫자를 처리하는 용도로 사용됩니다.
반응형