ต้นกำเนิดของ K = 1024 คืออะไร [ปิด]


73

ทำไมความแตกต่างของจำนวนไบต์ในหน่วยกิโลไบต์จึงมีอยู่ ในบางแห่งฉันได้เห็นหมายเลข 1024 (2 10 ) ในขณะที่ที่อื่น ๆ คือ 1,000 (และความแตกต่างก็ใหญ่ขึ้นด้วย M, G, T, ฯลฯ )

นี่ไม่ใช่การอภิปรายว่าควรจะเป็น 1024 หรือ 1,000 (แต่คุณสามารถพูดคุยในความคิดเห็น) แต่เกี่ยวกับสถานที่ / เวลาที่สถานการณ์นี้เกิดขึ้นและ / หรือแพร่หลายไปทั่ว

เท่าที่ฉันรู้ผู้ผลิต Linux และฮาร์ดแวร์ไม่เคยใช้ 1024 ตัวแปร ทำให้ฉันคิดว่า MS-DOS ทำให้รุ่นนี้เป็นเรื่องธรรมดา แต่มีข้อเท็จจริงอะไรบ้าง


23
การแทนค่าหนึ่งอยู่ในรูปแบบเลขฐานสอง (2 ^ 10 หรือ 1024) ในขณะที่อีกค่าเป็นทศนิยม (10 ^ 3 หรือ 1,000) ...
Trezoid

13
หากคุณกำลังมองหาคนที่จะตำหนิให้ชี้ไปที่ผู้ผลิตฮาร์ดไดรฟ์ มันทำให้อุปกรณ์ของพวกเขาดูเหมือนว่าพวกเขามีความจุมากขึ้นเมื่อมันแสดงในหน่วยทศนิยม MB, GB, ฯลฯ พวกเขาได้ทำสิ่งนี้มาโดยตลอดฉันเชื่อว่า แต่มันก็ไม่ได้จนกระทั่งเมื่อเร็ว ๆ นี้ว่าช่องว่างระหว่างทศนิยมและไบนารี เป็นเรื่องสำคัญ
LawrenceC

23
@ultrasawblade: คุณต้องการตำหนิผู้ผลิต HDD ว่าเป็นหนึ่งในกลุ่มเดียวที่ใช้คำนี้gigabyteถูกต้องหรือไม่
Paradroid

13
ฉันดูเหมือนจะเป็นสิ่งที่เข้าใจได้เสมอว่า 1K = 1024 กับคอมพิวเตอร์ทุกอย่างที่เกี่ยวข้องก่อน 20GB หรือมากกว่านั้นไดรฟ์จึงกลายเป็นเรื่องธรรมดา สิ่งนี้ยังเกิดขึ้นพร้อมกันกับเวลาที่ผู้ที่ไม่ใช่ช่างเทคนิคหลายคนเริ่มใช้พีซีเป็นประจำ จำนวนมากของวรรณกรรมคอมพิวเตอร์ (ทางเทคนิคและไม่ใช่เทคนิค) จากช่วงต้นยุค 90 และก่อนหน้านี้ไม่ได้พูดถึงอะไรเกี่ยวกับ "ทศนิยม" KBs หรือ "kibibytes"
LawrenceC

13
@paradroid: กิกะไบต์เดิมหมายถึง 1024 mb (และ mb = 1024 kb ฯลฯ ) มันได้รับการปรับเปลี่ยนให้มีค่าเฉลี่ย 1,000 เนื่องจาก HDD ผลิตยืนยันว่าใช้ผิด เป็นที่ยอมรับนี้ไม่ขึ้นอยู่กับสิ่งที่คุณจะพิจารณา "สิทธิ" ตั้งแต่กิโลไม่ได้หมายความ 1000 แต่ภายในวิทยาการคอมพิวเตอร์กิโลไบต์อยู่เสมอ 1024 ด้วยเหตุผลทางเทคนิคจนกระทั่งมันถูกเปลี่ยนในปี 1999
เจมส์

คำตอบ:


63

มันกลับไปค่อนข้างบางเวลาและรายละเอียดที่นี่ ดูเหมือนว่าคุณสามารถตำหนิ IBM ถ้าใคร

เมื่อคิดถึงเรื่องนี้มากกว่านี้ฉันจะโทษชาวอเมริกันโดยรวมเพราะพวกเขาไม่สนใจSystème international d'unités : P


31
มันง่ายที่จะตำหนิชาวอเมริกัน
Notinlist

13
@Notinlist: มันเป็นเรื่องตลก
Paradroid

5
มันทำให้ฉันนึกถึงฉากที่ยิ่งใหญ่ของภาพยนตร์เรื่อง Pulp Fiction ... คำถามที่เกี่ยวกับ "ระบบเมตริก" :-)
Pierre Watelet

7
@Notinlist มันง่ายที่จะตำหนิชาวอเมริกันเสมอ นั่นเป็นเหตุผลที่เราทำมันมาก นั่นและความจริงที่ว่ามันสนุก
Singletoned

3
มีรายการที่น่าสนใจในปี 1961 ซึ่งระบุว่า "65k" - เป็นลำดับแรกของขนาดซึ่งสามารถแสดงความแตกต่างที่ชัดเจนระหว่าง "k = 1024" และ "k = 1,000, กลม" มันลงมาอย่างชัดเจนสำหรับหลัง ในปี 1964 ทุกคนใช้ความหมายฐานสอง
Random832

26

การคำนวณทั้งหมดอยู่ในระดับต่ำในตอนเริ่มต้น และในการเขียนโปรแกรมระดับต่ำจำนวน "1,000" นั้นไร้ประโยชน์โดยสิ้นเชิงและพวกเขาต้องการคำนำหน้าสำหรับจำนวนที่มากขึ้นดังนั้นพวกเขาจึงนำ SI กลับมาใช้ซ้ำ ทุกคนรู้ในทุ่งไม่มีความสับสน มันทำหน้าที่ได้ดีเป็นเวลา 30 ปีหรือใครจะรู้

ไม่ใช่เพราะพวกเขาเป็นคนอเมริกันดังนั้นพวกเขาจึงจำเป็นต้องทำลาย SI ด้วยค่าใช้จ่ายทั้งหมด :-)

ไม่มีโปรแกรมเมอร์ที่ฉันรู้จักและพูดว่า kibibyte พวกเขาบอกว่ากิโลไบต์และพวกเขาหมายถึง 1024 ไบต์ อัลกอริทึมเต็มไปด้วยพลังของ 2 แม้วันนี้ "1,000" เป็นจำนวนที่ไร้ประโยชน์จริงๆระหว่างโปรแกรมเมอร์

การพูดว่า kibi และ mibi นั้นตลกเกินไปและดึงดูดความสนใจจากหัวเรื่อง เรามอบมันอย่างมีความสุขให้กับภาคโทรคมนาคมและที่เก็บข้อมูลดิสก์ :-) และฉันจะเขียน kibibytes บนส่วนต่อประสานผู้ใช้ที่ไม่ใช่โปรแกรมเมอร์อาจอ่านมัน


3
มันสนุกกว่าที่จะพูดเมื่อพูดถึงบิต - "mibibit"
James

3
ฉันคิดว่า KiB ฯลฯ ควรจะเด่นชัดเป็นกิโลไบต์และอื่น ๆ ไม่ใช่ kibibyte
Lie Ryan

2
@Lie Ryan ใช้คำนำหน้าเช่น "kilobinarybyte" เป็นข้อเสนอที่ล้มเหลวในที่สุดและมีตัวย่อที่แตกต่างจาก kibibyte ดูen.wikipedia.org/wiki/Binary_prefix
Ben Lee

3
ดังนั้นมันจะยุติธรรมที่จะออกเสียงเป็นกิโลเมตรกิโลเมตรเป็นกิโลเมตร?
JustJeff

3
หมายเลข 1,000 ไม่ใช่ "ไร้ประโยชน์ทั้งหมด" "k = 1,000" ถูกใช้ในการคำนวณมาตั้งแต่ปี 1950 คอมพิวเตอร์เครื่องแรกเป็นเครื่องทศนิยมไม่ใช่ไบนารี ความเร็วเครือข่ายได้รับการวัดเป็นทวีคูณ 1,000 แล้ว "มันใช้งานได้ดี 30 ปี"? จริงๆ? โปรแกรมเมอร์ได้ร้องเรียนเกี่ยวกับ "k = 1024" เป็นเวลาอย่างน้อย 43 ปี en.wikipedia.org/wiki/Timeline_of_binary_prefixes
endolith

8

มันถูกต้องและเหมาะสมสำหรับช่างเทคนิคที่ใช้ 1024 = 1K ในหลาย ๆ กรณี

สำหรับผู้ใช้ทั่วไปจะดีกว่าถ้าพูด 1,000 = 1k เพราะทุกคนคุ้นเคยกับระบบเลข 10

ปัญหาคือที่ที่จะวาดเส้น บางครั้งคนการตลาดหรือการโฆษณาไม่ประสบความสำเร็จใน "การแปล" หรือในการปรับข้อมูลทางเทคนิคและภาษาให้กับผู้ใช้


13
คนเทคนิคควรรู้ว่า 1024 ไบต์เป็น Kibibyte (KiB) จริง ๆ แต่รู้ว่าคำที่ไม่รู้จักโดยคนที่ไม่ใช่ด้านเทคนิค
Paradroid

8
ใครบอกว่าถูกต้อง Kilo มีความหมาย 1,000 มานานหลายศตวรรษดังนั้น IMO จึงไม่ควรใช้สำหรับ 1024
Bart van Heukelom

20
ไบต์ไม่ใช่หน่วย SI; KB หมายถึง "kilobel" (มอบให้ซึ่งเป็นหน่วยที่คุณไม่ต้องการใช้นอกเสียจากว่าคุณจะอธิบายเสียงที่ผลิตโดย Big Bang)
Wooble

10
@njd: C64 มี RAM 65536 ไบต์ ตามแบบแผนขนาดหน่วยความจำจะถูกระบุเป็น kibiBytes อัตราการถ่ายโอนข้อมูลเป็นกิโลบิตและที่เก็บข้อมูลขนาดใหญ่ในทุกสิ่งที่ผู้ผลิตคิดกัน ฮาร์ดไดรฟ์ใช้ T, G, M และ k บนฉลาก Windows รายงานขนาดใน Ti, Gi, Mi และ ki และ 1.44MB นั้นเป็นแผ่นฟล้อปปี้? สิ่งเหล่านี้ไม่ได้เป็น 1.44MB หรือ 1.44MiB พวกเขาเป็น 1.44 กิโลไบต์ นั่นคือ 1440kiB หรือ 1'474'560 ไบต์
สาม

5
แม้ว่า kiB และตัวแปรอื่น ๆ นั้นค่อนข้างใหม่ ฉันไม่คิดว่าพวกเขาจะถูกใช้งานเมื่อเกิดปัญหานี้ขึ้นแน่นอน - ฉันรู้สึกว่าพวกเขาได้รับการแก้ไขอย่างถูกต้อง!
Shinrai

3

ตำหนิผู้ผลิตเซมิคอนดักเตอร์ (ให้บริการไบนารีฮาร์ดแวร์เท่านั้น) [1]

ยังดีกว่า: ตำหนิตรรกะตัวเอง (ตรรกะไบนารีเป็นเพียงตรรกะพื้นฐานที่สุด)

ยังดีกว่า: ที่เราจะตำหนิสำหรับระบบทศนิยมอนาถ ?

มันมีข้อบกพร่องมากกว่าระบบเลขฐานสอง มันขึ้นอยู่กับอาการไอจำนวนนิ้วโดยเฉลี่ยในไอของสายพันธุ์มนุษย์

oooo ...

[1] ฉันต้องการคอมพิวเตอร์สามควอนตัมควอนตัมของฉัน !!! ในขณะนี้!


29
ฉันคิดว่าคุณจะพบว่าจำนวนนิ้วโดยเฉลี่ยน้อยกว่า 10 </pedant>
Rory Alsop

1
@Rory: ^ นั่นเป็นเสียงหัวเราะที่ดี
Mehrdad

2
@Rory: "น้อยลง" </pedant> หรือมันคืออะไร? แขวนในนาทีที่ผม aargh ...
outsideblasts

1

1024 ไม่ควรถูกตำหนิมันเป็นสิ่งที่ดีมากอย่างแน่นอนเนื่องจากคอมพิวเตอร์เหตุผล (ดิจิตอล) สามารถรวดเร็วและมีประสิทธิภาพเท่าที่เป็นอยู่ทุกวันนี้ เนื่องจากคอมพิวเตอร์ใช้ค่าเพียง 2 (0,1) เท่านั้นจึงนำความยากลำบากและความซับซ้อน (ความไม่ถูกต้อง) ของระบบ anolog ออกมาจากสมการ

มันจะซับซ้อนกว่านี้ถ้าเราบอกว่ากิโลไบต์เป็น 1,000 บิตเพราะ 2 ต่อ 1,000 กำลังเท่าใด? ดังนั้นแม้แต่ 1 กิโลไบต์ก็จะไม่ถูกต้องเพราะมันจะมีคะแนนลอยหรือการประมาณ

แต่ฉันตำหนิการตลาดเป็นอย่างมากสำหรับการขาย 8 กิกะไบต์ * และเพิ่มลงในสิ่งพิมพ์ขนาดเล็ก

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

มันเป็นความอัปยศจริงๆนั่นคือสิ่งเดียวกันกับความเร็วการเชื่อมต่อ ISP ของคุณจะบอกว่า 1.5Mbps แทนที่จะบอกคุณ ~ 150 กิโลไบต์ต่อวินาที มันเป็นเพียงการทำให้เข้าใจผิดมาก


3
ในการบอกว่าไฟล์ 15682 บิตมีขนาดใหญ่เพียงใดหรือสามารถโอนถ่ายไฟล์ดังกล่าวผ่านเครือข่ายได้เร็วเพียงใดพลังของ 2 ไม่มีบทบาท และนั่นคือบริบทที่ความสับสนมากที่สุด
Bart van Heukelom

2
ในที่สุดไฟล์จะถูกเก็บไว้ในหน้าหน่วยความจำซึ่งจัดชิดกับขอบเขตอำนาจไบนารี เมื่อส่งผ่าน TCP ขนาดหน้าต่างที่แพ็กเก็ตถูกส่งคือทวีคูณของกำลังสอง เมื่อไฟล์ถูกเก็บไว้ในฮาร์ดไดรฟ์ไฟล์นั้นจะถูกเก็บไว้ในบล็อกของพลังของสอง ฉันเข้าใจสิ่งที่คุณกำลังพูด แต่กิโลไบต์ = 1024 (หรืออย่างน้อยทวีคูณของกำลังสอง) ฝังอยู่ในการคำนวณมากเกินไป
FryGuy

1
ระบบเครือข่ายใช้บิตเป็นฐานเสมอ
Synetech

1
5.25 "ฟลอปปี้แรกถือ 109,375 bytes และโฆษณาเป็น" 109.4 Kbytes "ฉันเดาว่าพวกเขาทำสิ่งนี้ด้วยเหตุผลทางการตลาดที่ชั่วร้ายเช่นกันคุณคิดว่ามันจะมีเหตุผลมากกว่าที่จะเขียนมันเป็น" 106.8 KB "? ความเร็วและความเร็วของโมเด็มวัดเป็นทศนิยมเพื่อหลอกลวงพวกเราใช่ไหมโปรด
endolith

1
@Ibu: ความแตกต่างระหว่าง 1,000,000,000 ไบต์และ 1GB คือ 0 แน่นอนว่าทำไมผู้ผลิตฟลอปปี้จึงขยายจำนวนของพวกเขาโดยไม่เจตนาเมื่อความแตกต่างเล็กมาก? พวกเขาจะไม่ พวกเขาใช้ 1000s เนื่องจากมีเหตุผลชัดเจนและถูกต้องไม่ใช่เพราะพวกเขาเป็นส่วนหนึ่งของการสมคบกันเพื่อหลอกลวงลูกค้า ผู้ผลิตฮาร์ดไดรฟ์ได้รับการวัดใน 1000s ตั้งแต่ MB ปีด้วยเหตุผลเดียวกัน
endolith

0

เมื่อคุณพิจารณาว่าตัวเลขในคอมพิวเตอร์เป็นเลขฐานสองและ 2 ^ 10 คือ 1024 จะทำให้รู้สึกสมบูรณ์แบบ มันง่ายมากที่จะทำงานร่วมกับ 1024 มากกว่า 1000 เพราะคุณสามารถแบ่ง 1024 โดยใช้เพียงคณิตศาสตร์จำนวนเต็มและบิตขยับ การหารด้วย 1,000 นั้นเป็นการดำเนินการที่แพงกว่ามากซึ่งอาจต้องใช้เลขทศนิยม

เช่น

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

คุณคิดอย่างจริงจังว่าเวลาคำนวณมีความเกี่ยวข้องหรือไม่ เหตุใดคอมพิวเตอร์จึงไม่ประมวลผล "กม." เป็น "1024 ม." ถ้าเป็นเรื่องที่แปลงได้ยาก
endolith

@endolith ใช่ฉันคิดอย่างนั้นอย่างน้อยในอดีต แม้ว่าวันนี้อาจไม่ได้รับความสนใจ แต่ในช่วงแรก ๆ เมื่อวงจรซีพียูทุกเครื่องอยู่ในระดับพรีเมี่ยมการคำนวณที่ง่ายและรวดเร็วซึ่งให้คำตอบที่เหมาะสมนั้นน่าจะเหมาะสมกว่าสำหรับสิ่งนี้ โดยเฉพาะอย่างยิ่งถ้าคนรู้โดยการประชุมว่า 1KB หมายถึง 1024 ไบต์
Jo-Herman Haugholt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.