티스토리 뷰
코딩면접 질문 - java int와 long차이
프로그램에서 보통 1억번 연산을 1초 정도로 봅니다. 물론 복잡한 연산은 시간이 많이 걸릴 것이고 하드웨어가 더 좋다면 빠르겠지만 보통은 1억번에 1초로 봅니다.
그러면 40억번 연산을 하면 40초이고 50억번 연산을 한다면 50초입니다. 데이터가 아주 커진다면 40억개도 50억개도 될 수 있겠지요? 대한민국의 인구이동통계 2019년도 데이터 건수가 600만건이 넘습니다.
이 데이터를 가공 하려면 연산을 600만번만 할까요? 가공하려고 여러번 돌리다보면 40억번 50억번 60억번 연산도 하게 됩니다. 실제로도 그렇습니다.
만약 배열을 60억개짜리를 만들고 싶다고 하면 int로는 60억개를 만들 수 없습니다.
그 이유에 대해 하나씩 알아보겠습니다.
java에서 int는 32bit를 사용하고 long은 64bit를 사용합니다.
int는 2^5 2의 5승개 long은 2^6 2의 6승개의 공간이 필요합니다.
계산을 안해봐도 외우고 있으신 분들이 있겠지만
math.pow(2, 5) = 32.0
math.pow(2, 6) = 64.0
입니다.
long이 int에 비해서 메모리를 2배 사용합니다..
int는 32bit
00000000 00000000 00000000 00000000
위에서 00000000한줄이 0이 8개입니다. 8개짜리가 4개가 붙어있어서 32개 입니다.
long은 64bit 이므로 8개짜리가 8개 입니다.
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
long은 위와 같이 int에 비해서 공간이 두배로 필요합니다.
>>> math.pow(2, 32)
4294967296.0
>>> math.pow(2, 64)
1.8446744073709552e+19
그래서 int는 42억 몇개이고
long은 부동소수점 표기법으로 출력 되긴 했는데
>>> math.pow(10, 2)
100.0
>>> math.pow(10, 19)
1e+19
이걸 보면 10의 제곱이 100이니까 1e+19는 10의 19제곱입니다.
1 뒤에 0이 19개 붙는다는 뜻입니다.
억이 pow(10, 8)이고 조가 pow(10, 12) 경이 pow(10, 16) 해가 pow(10, 20)입니다.
그니까 pow(10, 19)는 1000경입니다.
개수로는 1844경개를 표현할 수 있습니다.
숫자로는 -922경부터 +922경까지입니다.
int는
-2147483648 ~ 2147483647
long은
-9223372036854775808 ~ 9223372036854775807
까지 표현할 수 있습니다.
end.
'일상' 카테고리의 다른 글
개발자 면접 질문 및 후기 (3) | 2019.09.19 |
---|---|
손코딩 테스트 문제 (0) | 2018.11.21 |
코딩 면접 질문들 - 사용자가 웹브라우저를 통해 서버에 이미지를 요청해서 사용자에게 보여주기까지 과정 (1) | 2018.01.29 |
코딩 면접 질문들 정리 - 제1편 OS, JVM (6) | 2018.01.19 |
넘나 어려운 영문법 용어 - 분사 (0) | 2017.05.03 |
- Total
- Today
- Yesterday
- vim
- docker container whale
- Sh
- 도커각티슈박스
- shellscript
- 도커각티슈케이스
- 2017 티스토리 결산
- Linux
- 싱가폴
- 도커티슈박스
- docker container tissue
- 도커컨테이너
- 도커티슈케이스
- docker container case
- 개발자
- docker container
- 이직
- docker container tissue box
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |