개발/Android Studio(Kotlin)

1바이트 1비트 차이, int 자료형 크기, 2진수를 10진수로 변환하는 방법

기디개 2022. 6. 21.
반응형

 

* 1비트 = 2진수를 표현할 수 있는 단위
즉, 0과 1(를 나타낼 수 있음)

2진수로의 표현 가능한 자리 → _ (한자리2^1)

* 1바이트 = 1비트가 8개 모인 것
즉, 0과 1을 구분 할 수 있는 2진수의 단위가 8개 모인 것

2진수로의 표현 가능한 자리 → _ _ _ _ / _ _ _ _ (여덟자리=2^8)


Int 자료형 크기, 2진수로 표현

그렇다면 우리가 알고 있는 int 자료형은 4byte인데,
이는 어떻게 생각하면 될까?
4byte = 1byte가 4개가 되는 것이므로, 2^(8*4)가 되는 것.

2진수를 32개 만큼 표현이 가능하다.

그렇다면, 10진수로 나타냈을 때 최대 표현은 얼마인가?

즉, 1111 / 1111 / 1111 / 1111 / 1111 / 1111 / 1111 / 1111
1111 / 1111 / 1111 / 1111 / 1111 / 1111 / 1111 / 1111
1111 / 1111 / 1111 / 1111 / 1111 / 1111 / 1111 / 1111
1111 / 1111 / 1111 / 1111 / 1111 / 1111 / 1111 / 1111

를 10진수로 나타낸다면?

 

출처: https://ko.calcuworld.com/%EC%88%98%ED%95%99/2%EC%A7%84%EB%B2%95-%EA%B3%84%EC%82%B0%EA%B8%B0/

2진수 →10진수 변환 계산기를 이용했다.
2진수의 1을 작성할 수 있는 갯수가 한계가 있어(25개가 한계), 작성되는데 까지 입력해봤을때.
33554431이라는 값이 나왔다.

휴대폰번호의 11자리를 입력하기엔 좀 모자라는 것을 확인했다.

 

1: 1개와 0: 31개는 입력이 가능해서 돌려봤다. 역시나 천만 이상의 자리를 넘지 못한다.

 


2의 32승의 크기는 얼마나 클까?

1. 2의 32승의 값 = 4,294,967,296이다.  int형의 범위는 아래와 같다.

출처: https://dojang.io/mod/page/view.php?id=30

음수자리를 포함해서 4,294,967,296이다.

2. 2진수의 값을 10진수로 표현했을때 아래와 같은 값을 볼 수 있다.

출처: https://zetawiki.com/wiki/2%EC%9D%98_%EA%B1%B0%EB%93%AD%EC%A0%9C%EA%B3%B1

....

흠.. 계산기로 계산 한 값과 동일하게 2의 24승까지만 계산한 결과를 zetawiki(처음들어봄)에서 확인할 수 있었다.

내가 아직 잘 이해를 못하고 있는건가.
내가 궁금한 것은, int 형의 자료형이 10진수의 얼마만큼의 크기를 담을 수 있는건지 궁금한건데..
적당히 에러가 나면 long 자료형을 사용해야하는건가...

 

반응형

댓글

💲 추천 글