Nguồn gốc của K = 1024 là gì? [đóng cửa]


73

Tại sao sự khác biệt về số lượng byte trong một kilobyte tồn tại? Ở một số nơi tôi đã thấy số 1024 (2 10 ) trong khi ở những nơi khác là 1000 (và sự khác biệt ngày càng lớn với M, G, T, v.v.).

Đây không phải là một cuộc thảo luận về việc nó nên là 1024 hay 1000 (mặc dù bạn có thể thảo luận về nó trong các bình luận) mà là về nơi / khi tình huống này bắt nguồn và / hoặc trở nên phổ biến.

Theo tôi biết, Linux và các nhà sản xuất phần cứng không bao giờ sử dụng biến thể 1024. Điều đó và nghe được, khiến tôi nghĩ rằng MS-DOS đã biến phiên bản này thành phổ biến, nhưng sự thật là gì?


23
Một đại diện ở dạng nhị phân (2 ^ 10 hoặc 1024) trong khi đại diện kia ở dạng thập phân (10 ^ 3 hoặc 1000) ...
Trezoid

13
Nếu bạn đang tìm kiếm những người cụ thể để đổ lỗi, hãy hướng đến các nhà sản xuất ổ cứng. Nó làm cho các thiết bị của họ trông giống như có nhiều dung lượng hơn khi được biểu thị bằng số thập phân MB, GB, v.v. Họ đã luôn làm điều này tôi tin nhưng gần đây khoảng cách giữa thập phân và nhị phân đã đủ rộng vấn đề quan trọng
LawrenceC

23
@ultrasawblade: Bạn muốn đổ lỗi cho các nhà sản xuất ổ cứng là một trong những nhóm duy nhất sử dụng thuật ngữ này gigabytemột cách chính xác?
paradroid

13
Tôi dường như luôn luôn hiểu rằng 1K = 1024 với bất kỳ máy tính nào có liên quan trước 20GB hoặc hơn ổ đĩa đã trở nên phổ biến. Điều này cũng gần như trùng với thời điểm nhiều người không có kỹ thuật bắt đầu sử dụng PC một cách thường xuyên. Số lượng lớn tài liệu máy tính (kỹ thuật và phi kỹ thuật) từ đầu những năm 90 và trước đó không đề cập bất cứ điều gì về KB "thập phân" hoặc "kibibytes".
LawrenceC

13
@paradroid: gigabyte ban đầu có nghĩa là 1024 mb (và mb = 1024 kb, v.v.). Nó được sử dụng lại có nghĩa là 1000 vì các nhà sản xuất HDD khăng khăng sử dụng sai. Phải thừa nhận rằng, điều này phụ thuộc vào những gì bạn cho là "đúng" vì kilo có nghĩa là 1000, nhưng trong khoa học máy tính, kilobyte luôn là 1024 vì lý do kỹ thuật cho đến khi nó được thay đổi vào năm 1999.
James

Câu trả lời:


63

Nó quay trở lại khá lâu, và được chi tiết ở đây . Có vẻ như bạn có thể đổ lỗi cho IBM, nếu có ai.

Nghĩ về nó nhiều hơn, tôi sẽ đổ lỗi cho người Mỹ nói chung, vì sự coi thường trắng trợn của họ đối với Système International d'unités : P


31
Luôn luôn dễ dàng đổ lỗi cho người Mỹ.
Notinlist

13
@Notinlist: Đó là một trò đùa.
paradroid

5
Nó gợi cho tôi một cảnh hùng tráng của bộ phim Pulp Fiction ... Người có câu hỏi về "hệ thống số liệu". :-)
Pierre Watelet

7
@Notinlist Thật dễ dàng để luôn đổ lỗi cho người Mỹ. Đó là lý do tại sao chúng tôi làm điều đó rất nhiều. Điều đó và thực tế là niềm vui của nó.
Singletname

3
Mục nhập năm 1961 rất thú vị, trong đó đề cập đến "65k" - là thứ tự cường độ đầu tiên có thể cho thấy sự khác biệt rõ ràng giữa "k = 1024" và "k = 1000, được làm tròn", nó xuất hiện rõ ràng cho lần sau. Năm 1964, mặt khác, mọi người đều sử dụng ý nghĩa nhị phân.
Random832

26

Tất cả các máy tính là cấp thấp lúc ban đầu. Và ở cấp độ lập trình thấp, số "1000" hoàn toàn vô dụng và họ cần tiền tố cho số tiền lớn hơn để họ sử dụng lại các SI. Mọi người đều biết nó trong lĩnh vực này, không có nhầm lẫn. Nó phục vụ tốt trong 30 năm hoặc ai biết.

Không phải vì họ là người Mỹ nên họ cần phá SI bằng mọi giá. :-)

Không có lập trình viên mà tôi biết và nói kibibyte. Họ nói kilobyte và họ có nghĩa là 1024 byte. Các thuật toán có đầy đủ các quyền hạn của 2. Ngay cả ngày nay, "1000" là một con số thực sự vô dụng giữa các lập trình viên.

Nói kibi và mibi chỉ là quá buồn cười và thu hút sự chú ý từ chủ đề. Chúng tôi vui vẻ tặng nó cho các lĩnh vực lưu trữ đĩa và viễn thông :-). Và tôi sẽ viết kibibytes trên giao diện người dùng nơi những người không lập trình có thể đọc nó.


3
Thậm chí còn vui hơn khi nói về bit - "mibibit"
James

3
Tôi nghĩ KiB, v.v ... được cho là phát âm kilobinarybyte, v.v. và không phải kibibyte.
Lie Ryan

2
@Lie Ryan, sử dụng các tiền tố như "kilobinarybyte" là một đề xuất cuối cùng đã thất bại và có các chữ viết tắt khác với kibibyte. Xem en.wikipedia.org/wiki/Binary_prefix
Ben Lee

3
Vì vậy, sẽ công bằng khi phát âm km là kilodecimalmeters?
JustJeff

3
Số 1000 không phải là "hoàn toàn vô dụng". "K = 1000" đã được sử dụng trong điện toán từ những năm 1950. Các máy tính đầu tiên thực sự là máy thập phân, không phải nhị phân. Tốc độ mạng luôn được đo bằng bội số của 1000. "Nó phục vụ tốt trong 30 năm"? Có thật không? Các lập trình viên đã phàn nàn về "k = 1024" trong ít nhất 43 năm. vi.wikipedia.org/wiki/Timeline_of_binary_prefixes
endolith

8

Đó là chính xác và có ý nghĩa cho những người kỹ thuật sử dụng 1024 = 1K trong nhiều trường hợp.

Đối với người dùng cuối, thông thường tốt hơn là nói 1000 = 1k vì mọi người đều quen với hệ thống số dựa trên 10.

Vấn đề là nơi để vẽ đường. Đôi khi những người tiếp thị hoặc quảng cáo không thực sự thành công trong việc "dịch" hoặc điều chỉnh dữ liệu kỹ thuật và ngôn ngữ cho người dùng cuối.


13
Những người kỹ thuật nên biết rằng 1024 byte thực sự là một Kibibyte (KiB), nhưng biết rằng thuật ngữ này không được những người không có kỹ thuật biết đến.
paradroid

8
Ai nói nó đúng? Kilo có nghĩa là 1000 trong nhiều thế kỷ, vì vậy IMO họ không bao giờ nên sử dụng nó cho 1024.
Bart van Heukelom

20
Byte không phải là một đơn vị SI; KB có nghĩa là "kilobel" (được cấp, một đơn vị bạn không bao giờ muốn sử dụng trừ khi bạn mô tả âm thanh, nếu có, được tạo ra bởi Big Bang.)
Wooble

10
@njd: C64 có 65536 byte RAM. Theo quy ước, kích thước bộ nhớ được chỉ định trong kibiBytes, tốc độ truyền dữ liệu tính bằng kilobit và lưu trữ hàng loạt trong bất cứ thứ gì mà các nhà sản xuất nghĩ đến bây giờ là Byte. Ổ cứng sử dụng T, G, M và k trên nhãn, Windows báo cáo kích thước theo Ti, Gi, Mi và ki. Và những đĩa mềm 1,44 MB? Chúng không phải là 1,44 MB hay 1,44MiB, chúng là 1,44 kilokibibytes. Đó là 1440kiB hoặc 1'474'560 byte.
Thứ ba

5
Các biến thể kiB, vv là khá mới, mặc dù. Tôi không nghĩ rằng họ đã được sử dụng khi vấn đề này phát sinh, chắc chắn - tôi đã có ấn tượng rằng họ đã được thực hiện chính xác để giải quyết nó!
Shinrai

3

Đổ lỗi cho các nhà sản xuất chất bán dẫn (họ chỉ cung cấp cho chúng tôi phần cứng nhị phân) [1]

Tốt hơn hết: đổ lỗi cho chính logic (logic nhị phân chỉ là logic cơ bản nhất).

Tốt hơn hết: chúng ta sẽ đổ lỗi cho hệ thống thập phân khốn khổ nào?

Nó có nhiều sai sót hơn nhiều so với hệ thống nhị phân. Nó được dựa ho về số lượng trung bình của ngón tay trong loài người ho

Ôi ...

[1] Tôi muốn máy tính ba qubit lượng tử của mình !!! Hiện nay!


29
Tôi nghĩ bạn sẽ thấy số ngón tay trung bình ít hơn 10 </ pedant>
Rory Alsop

1
@Rory: ^ đó là một tiếng cười vui vẻ
Mehrdad

2
@Rory: "ít hơn" </ pedant>. Hoặc là nó? Đợi một phút, tôi aargh ...
outsideblasts

1

1024 không phải là điều đáng trách, đó thực sự là một điều rất tốt, vì đó là lý do máy tính (kỹ thuật số) có thể nhanh và hiệu quả như ngày nay. Bởi vì máy tính chỉ sử dụng 2 giá trị (0,1), nó loại bỏ sự khó khăn và phức tạp (không chính xác) của hệ thống anolog ra khỏi phương trình.

Sẽ phức tạp hơn nếu chúng ta nói một kilobyte là 1000 bit bởi vì 2 với công suất là 1000? do đó, thậm chí 1 kilobyte sẽ không chính xác bởi vì nó sẽ có các điểm nổi hoặc xấp xỉ.

Nhưng tôi chủ yếu đổ lỗi cho việc tiếp thị vì đã bán 8 gigabyte * và thêm phần này vào bản in nhỏ

* 1 gigabyte is 1,000,000,000 bytes. 

thực sự rất xấu hổ, đó là điều tương tự với tốc độ kết nối, ISP của bạn sẽ nói 1,5Mbps thay vì nói với bạn ~ 150 kiloBytes. nó chỉ là rất sai lệch


3
Khi nói một tệp 15682 bit lớn đến mức nào, hoặc một tệp như vậy có thể được truyền qua mạng nhanh như thế nào, quyền hạn của 2 không có vai trò. Và đó là bối cảnh mà sự nhầm lẫn nhất là.
Bart van Heukelom

2
Cuối cùng, tập tin được lưu trữ trong các trang bộ nhớ, được căn chỉnh theo ranh giới quyền lực nhị phân. Khi gửi qua TCP, kích thước cửa sổ trong đó các gói được gửi là bội số sức mạnh của hai. Khi tệp được lưu trữ trên ổ cứng, nó sẽ được lưu trữ trong các khối quyền hạn của hai. Tôi hiểu những gì bạn đang nói, nhưng kilobyte = 1024 (hoặc ít nhất là bội số sức mạnh của hai) đã ăn sâu vào máy tính quá nhiều.
FryGuy

1
để công bằng, mạng luôn sử dụng các bit làm cơ sở của họ.
Synetech

1
Đĩa mềm 5,25 "đầu tiên chứa 109.375 byte và được quảng cáo là" 109,4 Kbyte ". Tôi đoán họ cũng đã làm điều này vì lý do tiếp thị xấu xa? Bạn nghĩ rằng sẽ hợp lý hơn khi viết nó là" 106,8 KB "? tốc độ và tốc độ modem đều được đo bằng số thập phân để đánh lừa chúng tôi? Xin vui lòng.
endolith

1
@Ibu: sự khác biệt giữa 1.000.000.000 byte và 1GB là 0. Thật vậy, tại sao các nhà sản xuất đĩa mềm lại lạm dụng số lượng của họ một cách độc hại khi chênh lệch quá nhỏ? Họ sẽ không. Họ đã sử dụng 1000 vì nó hợp lý, rõ ràng và chính xác, không phải vì chúng là một phần của âm mưu lừa gạt khách hàng. Các nhà sản xuất ổ cứng cũng đã đo được 1000 năm kể từ những năm MB, vì lý do tương tự.
endolith

0

Khi bạn coi các số trên máy tính là nhị phân và 2 ^ 10 là 1024, điều đó có ý nghĩa hoàn hảo. Làm việc với 1024 dễ dàng hơn nhiều so với 1000, vì bạn có thể dễ dàng chia cho 1024 chỉ bằng phép toán số nguyên và dịch chuyển bit . Chia cho 1000 là một hoạt động tốn kém hơn nhiều, có thể cần toán học dấu phẩy động.

Ví dụ

bytes = 1 073 741 824
kilobytes = bytes >> 10 = 1 048 576
megabytes = kilobytes >> 10 = 1024
gigabytes = megabytes >> 10 = 1

Bạn nghiêm túc nghĩ rằng thời gian tính toán có liên quan? Tại sao máy tính không xử lý "km" là "1024 m", sau đó, nếu quá khó để chuyển đổi?
endolith

@endolith Có tôi nghĩ vậy, ít nhất là trong lịch sử. Mặc dù có thể không đáng kể ngày hôm nay, nhưng trong những ngày đầu khi mọi chu kỳ CPU đều ở mức cao, một phép tính nhanh chóng và dễ dàng đưa ra một câu trả lời xác đáng sẽ thích hợp hơn cho những thứ như thế này. Đặc biệt là nếu mọi người biết theo quy ước rằng 1KB có nghĩa là 1024 byte.
Jo-Herman Haugholt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.