ทำไม `df 'ใช้“ Bi” เป็นตัวย่อของ bytes?


8

เห็นได้ชัดว่าdfกำลังใส่ "i" หลังตัวอักษรพิมพ์ใหญ่สำหรับแต่ละขนาด สิ่งนี้สมเหตุสมผลสำหรับ Kilobytes / Kibibytes, Gigabytes / Gibibytes และ Mebibytes (ถ้านั่นคือสิ่งที่ "Mi" หมายถึง) แต่ทำไมมันถึงใช้ "Bi" เป็นจำนวนไบต์?

ตัวอย่างเช่นส่วนหนึ่งของผลลัพธ์ของฉันdf -hคือ:

map auto_home           0Bi    0Bi    0Bi   100%       0          0  100%   /home

1
ผลลัพธ์ของdf -Hคืออะไร RTM- hตัวเลือกการส่งออกเป็นฐาน 2 และการHส่งออกตัวเลือกที่เป็นฐาน 10
fd0

คำตอบ:


9

มันเป็นความแตกต่างระหว่างค่าทศนิยมและที่คำนำหน้าไบนารี ในกรณีนี้มันกำลังบอกว่าคุณกำลังใช้ 0 ไบท์ไบต์

ความแตกต่างคืออะไร?

การใช้ "Giga" เป็นตัวอย่างของเราหมายถึง 1,000 3ของบางสิ่ง (เช่น Gigahertz)

ในคอมพิวเตอร์มันมีปัญหาที่น่าสนใจ:

Gigabyte คือ 1,000 3ไบต์ อย่างไรก็ตามไบต์คือ 8 (ไบนารี) บิต ซึ่งหมายความว่าเป็นเทคนิค 1024 3ไบต์ ในการพิจารณาเรื่องนี้เราใช้สัญลักษณ์ที่แตกต่างกัน:

  • Giga เป็นทศนิยม (ฐาน 10)
  • Gibi เป็นเลขฐานสอง (ฐาน 2)

ผลลัพธ์กำลังบอกคุณว่ากำลังใช้หน่วยไบนารี

หากคุณต้องการได้ผลลัพธ์ใน "รูปแบบเลขฐานสิบที่มนุษย์สามารถอ่านได้" ให้ใช้ตัวพิมพ์ใหญ่ "H":

$ df -H
/dev/disk2      1.1T   413G   706G    37% 100935848 172431606   37%   
map auto_home     0B     0B     0B   100%         0         0  100%   /home

ในที่สุดมันไม่ใช่การประชุมของ Apple แต่เป็นหนึ่งจาก BSD (เป็นคำสั่ง BSD) คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่ man page ( man df)


8
ฉันไม่เข้าใจว่าสิ่งนี้ตอบคำถามได้อย่างไร OP ทำให้มันชัดเจนว่าพวกเขาทราบความแตกต่างระหว่างและ1GB 1GiBคำถามคือ: อะไรคือความแตกต่างระหว่าง1Biและ1B? ทำไมสองสัญลักษณ์ที่แตกต่างกันอย่างไร
Federico Poloni

5
"Gigabyte คือ 1000 ^ 3 ไบต์อย่างไรก็ตามหนึ่งไบต์คือ 8 (ไบนารี) บิตซึ่งหมายความว่าเป็นเทคนิค 1024 ^ 3 ไบต์" - ฉันไม่เห็นวิธีการที่ไบต์เป็น 8 บิตนำไปสู่กิกะไบต์ความหมาย 1024 ^ 3 แทน 1,000 ^ 3 ...
marcelm

@marcelm Gigabyte = 1024 เมกะไบต์ เมกะไบต์ = 1024 กิโลไบต์ กิโลไบต์ = 1024 ไบต์ 1024 = 2 ^ 10
Dmitry Kudriavtsev

3
@marcelm คุณถูกต้องนั่นเป็นงานที่ไม่ต่อเนื่อง หน่วยความจำ (RAM) ได้รับการวัดเสมอเป็นทวีคูณของกำลัง 2 เนื่องจากการผลิตชิป พื้นที่ในดิสก์หมุนไม่จำเป็นเพราะขึ้นอยู่กับพื้นที่ผิวและความหนาแน่นบิตดังนั้นผู้ผลิตดิสก์เลือกที่จะใช้กำลัง 1,000 เพื่อทำให้ตัวเลขในกล่องดูดีขึ้น "Gibi" และคำนำหน้าที่คล้ายกันเป็นการสร้างย้อนหลังเพื่อพยายามแยกแยะระหว่างพวกเขา แต่เห็นได้ชัดว่าพวกเขาทำสิ่งที่ยุ่งเหยิงยิ่งขึ้นเท่านั้น
BradC

1
เหตุผลที่แท้จริงที่ทำให้ตัวเลขนำหน้าทศนิยมใช้สำหรับ 2 ^ x ในวันก่อนหน้าคือ: 2 ^ 10 ~ 10 ^ 3
klanomath

5

Bi หมายความว่าคุณอยู่ในหน่วย 1024 0ไบต์แทนที่จะเป็น 1000 0ไบต์

นั่นคือมันเป็นหน่วยเดียวกัน แต่จะไม่มีส่วนนำหน้าที่ใหญ่กว่านั่นหมายถึงเลขชี้กำลังไม่ใช่ศูนย์ ดูเหมือนว่าdfเป็นเรื่องอวดรู้ซึ่งเป็นวิธีการที่สอดคล้องกันเมื่ออยู่ในโหมด power-of-2 units

นี่เป็นข้อตกลงที่สร้างขึ้น: ไม่มีตัวชี้วัดหรือหน่วย "Bi" ของIEC ตัวนำหน้า IECเพียง 2 ตัวอักษรที่ลงท้ายด้วย "i" สำหรับใช้กับปริมาณบิตหรือไบต์ (เช่น Mi สำหรับ mebibytes หรือ mebibits) และไม่คุณไม่ได้คาดหวังว่าจะพูดออกมาดัง ๆ อย่างไร้ความปราณีกับใบหน้าที่ตรง

"iB" อาจมีความหมายมากกว่านี้ (ไบท์ไบนารี่ที่ไม่มีส่วนนำหน้า) แต่ก็ไม่เป็นเช่นนั้น


2
ถ้าอย่างนั้นก็ควรจะเป็น "iB" ;)
Cai

1024 ^ 0 มีค่าเท่ากับ 1,000 ^ 0 (= 1) ดังนั้นจึงไม่สามารถอธิบายได้ ไม่มีคำศัพท์ / สัญลักษณ์เพื่อบอกไบนารี่ไบท์ (เพราะไบต์บอกเป็นนัยถึงไบนารี่) ดังนั้นฉันจึงใช้ giga เป็นตัวอย่าง มันยิ่งยากที่จะระบุว่า 0 เพราะ 0 ในไบนารีและ 0 ในทศนิยมเท่ากันและอาจทำให้สับสน
อัลลัน

@Cai: ฉันตรวจสอบคำนำหน้า IEC รวมถึง "i" กับคำนำหน้าเสมอและไม่พูดถึงหน่วยฐาน "iB" ดูคำตอบที่อัปเดต แต่ใช่เห็นด้วยที่จะสอดคล้องกันมากขึ้น แน่นอนในบริบทนี้ ( dfเอาต์พุตFreeBSD / OS X ) นั่นคือความหมาย
Peter Cordes

1
บางที iB มีจินตนาการไบต์?
Federico Poloni
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.