multiples of bytes.png

1kb = 1024? 1000? bytes

둘다 맞다.

큰 숫자를 표현하는 방법에는 2가지가 있다. 10진수 기반의 1000단위로 표기하거나 2진수 기반의 1024로 표기할 수 있다. 1000 단위는 SI prefix names 기반 1024 단위는 IEC prefix names 기반의 표기 방식이다.

Using IEC standard:
1 KiB = 1,024 bytes (Note: big K)
1 MiB = 1,024 KiB = 1,048,576 bytes

Using SI standard:
1 kB = 1,000 bytes (Note: small k)
1 MB = 1,000 kB = 1,000,000 bytes

참고: ubunty units policy

그럼 컴퓨터를 사면 내가 사용할 수 있는 용량이 표기된 용량보다 적을까? (광고전략!)

우리는 현실세계에서 10의 제곱근 형식으로 숫자를 표기한다. 하지만 컴퓨터 세상에서는 binary(2진수) 기반 단위를 사용한다.

스토어에서 컴퓨터를 팔 때 용량을 표기하는 단위는 10의 거듭제곱이다. 1kb drive는 1000 bytes! 그런데 컴퓨터의 운영체재(OS)는 1KiB를 1024B 단위로 인식하고 읽어 들인다. 이 차이가 컴퓨터에서 사용할 수 있는 하드의 용량이 스토어에서 광고하는 용량보다 적은 이유이다.

컴퓨터는 드라이브를 1024 단위로 읽어 들이고 내가 산 500GB SDD를 컴퓨터는 약 466GB로 인식한다.
결론은 10진수 단위로 계산된 용량을 광고에서 사용하면 안 되지만... 사용하고 있는 것! (HDD, SSD, flash drive)

그런데 RAM은 Binary 1024 version으로 팔리고 있고...

마지막으로 인터넷 속도를 정확하게 알아보자 (또 다른 광고전략!)

아래를 기억하고

8 bits >> 8b
1 Byte >> 1B

보통 인터넷 광고를 하면 "인터넷 스피드 100Mb" 라고 광고를 한다.

100메가 바이츠? 아니다 100메가 비츠다

그런데 컴퓨터가 파일을 다운로드할 때 표기하는 단위는 MB(메가 바이츠)다. 그래서 100Mb의 실제 인터넷 속도는 (100Mb/8b) x 1B = 12.5MB 이다.

100Mb가 12.5MB 보다 빨라 보이니까... ㅋㅋㅋ

네트워크는 bytes "B" 단위로 소통한다.
그래서 그냥 정리 해봤다!

마지막으로

I/O stream에서 1 byte 읽어 오라고 하면... 1 byte 포함된 인접한 256 bytes 또는 512 bytes(블럭 단위)를 읽어오고 1 byte를 반환한다.
그건 다음 글에서