ตัวเลขฐานแปด (ฐาน 8) ใช้เพื่ออะไร


11

Java มีวิธีในการเขียนตัวอักษรตัวเลขในฐาน 2, 8, 10 และ 16

ฉันกำลังสงสัยว่าทำไมฐาน 8รวมเช่นint x = 0123;?

ฉันคิดว่าอาจมีบางสิ่งที่คล้ายกับความจริงที่ว่าเลขฐานสิบหกความจุของหนึ่งไบต์คือFF + 1และอื่น ๆ


7
ฉันเชื่อว่าคำถามของคุณคือ "ใช้เลขฐานแปดเพื่ออะไร"
GetMeARemoteJob

ใช่นั่นเป็นวิธีที่ฉันควรถามคำถาม ขอบคุณสำหรับคำตอบที่น่าสนใจทั้งหมด ฉันคิดว่ามันอาจมีพื้นฐานทางประวัติศาสตร์ แต่ฉันไม่เคยมีประสบการณ์ที่จำเป็นในการใช้นิ้วของฉัน
jokinjo

คำตอบ:


16

คำตอบนี้ถูกเขียนขึ้นสำหรับคำถามเดิม"ทำไมการเขียนตัวเลขในฐาน 8 จึงมีประโยชน์"

มันคือการทำให้ภาษาคุ้นเคยกับผู้ที่รู้จัก C ฯลฯ ดังนั้นคำถามคือทำไมจึงสนับสนุนพวกเขา!

มีสถาปัตยกรรม (PDP ต่างๆ) ซึ่งใช้คำกว้าง 18 บิต (และคำอื่น ๆ ใช้ 36 บิตคำ) ดังนั้นตัวอักษรที่ตัวอักษรที่มีความกว้าง 3 บิตจะเป็นประโยชน์

จวนเพียงวางฉันได้เห็นมันใช้ในรหัส Java เป็นสำหรับการระบุสิทธิ์ยูนิกซ์สไตล์เช่น0777, 0644ฯลฯ

(คำตอบแบบปากต่อปากว่าทำไมมันถึงได้รับการสนับสนุนคือ "รับ upvotes สำหรับคำถามนี้ ")


โอ้จุดดีฉันลืมเกี่ยวกับสิทธิ์ของไฟล์ใน Linux! การใช้งานบิตที่มีให้น้อยที่สุด ... ฐานแปดเหมาะกับใบเสร็จ
sarlacii

1
@sarlacii "การใช้งานน้อยที่สุด" ไม่มีอะไรเกี่ยวข้องกับมัน "octal" -ness ของ int ตัวอักษรมีอยู่ในซอร์สโค้ดเท่านั้น มันง่ายกว่าที่จะติดตามสิทธิ์ที่แสดงโดยตัวอักษรฐานแปดเพราะตัวเลขจะตรงกับผู้ใช้กลุ่มและอื่น ๆ โดยตรง
Andy Turner

ฉันทำการเขียนโปรแกรมครั้งแรกของฉันบนคอมพิวเตอร์เมนเฟรมที่มีคำ 60 บิตและชุดอักขระ 6 บิต ที่อยู่คือ 18 บิต แน่นอนว่าเราใช้เลขฐานแปด เมื่อฉันพบเลขฐานสิบหกครั้งแรกมันเป็นเรื่องแปลกมากที่เห็นตัวอักษรเป็นตัวเลข
Ole VV

@Andy ฉันยังคงคิดว่ามันใช้น้อยแม้ว่า ... ทางเลือกของความยาวบิตไม่เพียงเกี่ยวข้องกับรหัส มันถูก จำกัด ด้วยทรัพยากร เช่น. ฉันอาจเลือกที่จะใช้ 8 บิตเพื่อเข้ารหัสแต่ละสิทธิ์ปิดบังบิตที่ไม่ได้ใช้ต้องใช้ 3 ไบต์หรือมากกว่านั้นใช้ขั้นต่ำ 3 บิตจากนั้นเข้ารหัสตัวเลขฐานแปดเพื่อใช้เพียง 1 และครึ่งไบต์ (ใช้ที่ 4 เหนียวเล็กน้อย) แต่ใช่มันเป็นกฎเกณฑ์เมื่อคุณไปที่ระดับบิต ... เนื่องจากคุณสามารถอ่านค่าฐานแปดที่รวมกันเป็นฐานสิบหกได้
sarlacii

7

"เลขฐานแปดไม่เหมือนที่เคยเป็นอย่างไรก็ตาม Octal จะใช้เมื่อจำนวนบิตในหนึ่งคำมีค่าเท่ากับ 3 นอกจากนี้ยังใช้เป็นชวเลขสำหรับแสดงสิทธิ์ของไฟล์บนระบบ UNIX และการเป็นตัวแทนของ หมายเลข UTF8 เป็นต้น "

จาก: https://www.tutorialspoint.com/octal-number-system


3
ไม่ใช่ "จำนวนบิตในคำ" จริงๆเพราะมันถูกใช้กับ minicomputers ขนาด 16 บิตในรูปแบบของบิตสูง 0/1 แล้วจำนวน 5 ฐานแปด คำอธิบายที่ดีกว่าอาจเป็น: ใช้เมื่อขนาดของเขตข้อมูลในคำมีค่าเท่ากับ 8 บิต คอมพิวเตอร์เครื่องเดียวกันนั้นมีการลงทะเบียน 8 ครั้งบ่อยครั้งดังนั้นการลงทะเบียนที่ระบุในคำสั่งจะมีฟิลด์ 3 บิตเพื่อตั้งชื่อการลงทะเบียนคำสั่ง register-to-register จะมีสองฟิลด์ 3 บิตดังกล่าว คอมพิวเตอร์เครื่องเดียวกันเหล่านั้นมักมี opcode 3 บิตหรือ opcode 3 บิตที่มี "escape" (เช่น 0111) ไปยังopcode 6 บิต ; ฯลฯ เป็นต้น
davidbak

4

ประวัติศาสตร์คอมพิวเตอร์ (วิทยาศาสตร์) เพื่อเป็นตัวแทน goup ของบิตฐาน 10 ไม่พอดีฐาน 8 = 2 3สำหรับ 3 บิตและฐาน 16 = 2 4สำหรับ 4 บิตพอดีดีกว่า

ข้อดีของฐาน 8 คือตัวเลขทั้งหมดเป็นตัวเลขจริง: 0-7 ในขณะที่ฐาน 16 มี "หลัก" 0-9A-F

สำหรับ 8 บิตของฐาน 16 ไบต์ (เลขฐานสิบหก) เป็นแบบที่ดีกว่าและได้รับรางวัล สำหรับ Unix base 8 octal มักจะใช้สำหรับrwxบิต (อ่าน, เขียน, เรียกใช้) สำหรับผู้ใช้กลุ่มและอื่น ๆ ดังนั้นตัวเลขฐานแปดเช่น 0666 หรือ 0777

เลขฐานสิบหกเป็นที่แพร่หลายไม่ใช่อย่างน้อยเนื่องจากขนาดของคำคอมพิวเตอร์ในปัจจุบันมีหลายไบต์ 8 บิตนั้นbyteกลายเป็นมาตรฐานเป็นอีกเรื่องหนึ่งที่เกี่ยวข้องกับเรื่องราวที่ยาก (2 3บิตและการจัดการ)


0

คำตอบเดิมสำหรับ "หมายเลขฐานแปด (ฐาน 8) ใช้เพื่ออะไร"

การใช้งานทั่วไปของ Octal

  • เป็นตัวย่อของไบนารี:สำหรับเครื่องคำนวณ (เช่น UNIVAC 1050, PDP-8, ICL 1900 เป็นต้น) Octal ถูกใช้เป็นตัวย่อของไบนารีเพราะขนาดคำของพวกเขาหารด้วยสาม (แต่ละเลขฐานแปดแทนสามฐานแปด หลัก) ดังนั้นสอง, สี่, แปดหรือสิบสองหลักสามารถแสดงคำศัพท์ทั้งเครื่องได้อย่างกระชับ นอกจากนี้ยังลดค่าใช้จ่ายด้วยการอนุญาตให้หลอด Nixie จอแสดงผลเจ็ดส่วนและเครื่องคิดเลขใช้สำหรับคอนโซลผู้ควบคุมเครื่องที่ไบนารีจอแสดงผลซับซ้อนเกินกว่าจะใช้งานได้หน้าจอทศนิยมจำเป็นต้องใช้ฮาร์ดแวร์ที่ซับซ้อนในการแปลง radices และแสดงเลขฐานสิบหก .

  • การแสดงคำ 16-, 32- หรือ 62 บิต:แพลตฟอร์มการคำนวณที่ทันสมัยทั้งหมดใช้คำ 16-32- หรือ 64- บิตแบ่งออกเป็นแปดบิตต่อไป ในระบบดังกล่าวจะต้องใช้ตัวเลขฐานแปดสามหลักต่อไบต์พร้อมกับตัวเลขฐานแปดที่มีความสำคัญมากที่สุดซึ่งเป็นตัวเลขสองหลัก การแสดงแปดด้านของคำ 16 บิตต้องการ 6 หลัก แต่ตัวเลขแปดหลักที่สำคัญที่สุดแสดงถึง (ค่อนข้างไม่ค่อย) เพียงหนึ่งบิต (0 หรือ 1) การเป็นตัวแทนนี้ไม่มีวิธีการอ่านไบต์ที่สำคัญที่สุดได้อย่างง่ายดายเพราะมันเปื้อนมากกว่าตัวเลขแปดฐานแปด ดังนั้นเลขฐานสิบหกจึงใช้กันอย่างแพร่หลายในภาษาการเขียนโปรแกรมวันนี้เนื่องจากเลขฐานสิบหกสองหลักระบุหนึ่งไบต์อย่างแน่นอน บางแพลตฟอร์มที่มีขนาดคำที่มีพลังแห่งสองคำยังคงมีคำสั่งย่อยที่เข้าใจได้ง่ายขึ้นหากแสดงเป็นเลขฐานแปด ซึ่งรวมถึงตระกูล PDP-11 และ Motorola 68000 สถาปัตยกรรม x86 แพร่หลายในปัจจุบันเป็นของประเภทนี้เช่นกัน แต่ฐานแปดนั้นไม่ค่อยได้ใช้บนแพลตฟอร์มนี้

  • คำอธิบายการเข้ารหัส:คุณสมบัติบางอย่างของการเข้ารหัสเลขฐานสองของ opcodes ในสถาปัตยกรรม x86 ที่ทันสมัยจะปรากฏชัดเจนมากขึ้นเมื่อแสดงในฐานแปดเช่น ModRM ไบต์ซึ่งแบ่งออกเป็นเขตของ 2, 3 และ 3 บิตดังนั้นฐานแปดจะมีประโยชน์ในการอธิบาย การเข้ารหัสเหล่านี้

  • การคำนวณและการอนุญาตการเข้าถึงไฟล์: Octal บางครั้งใช้ในการคำนวณแทนเลขฐานสิบหกบางทีบ่อยที่สุดในยุคปัจจุบันร่วมกับการอนุญาตไฟล์ภายใต้ระบบ Unix (ในการเข้าถึงสิทธิ์ไปยัง chmod) มันมีข้อได้เปรียบที่ไม่จำเป็นต้องมีสัญลักษณ์พิเศษใด ๆ เป็นตัวเลข (ระบบเลขฐานสิบหกคือฐาน -16 และดังนั้นจึงจำเป็นต้องมีสัญลักษณ์เพิ่มเติมหกเกิน 0–9)

  • จอแสดงผลดิจิตอล:หมายเลขฐานแปดยังใช้ในการแสดงเนื้อหาดิจิทัลบนหน้าจอเนื่องจากมีจำนวนสัญลักษณ์ที่ใช้ในการแสดงน้อยกว่า

  • การแสดงกราฟิกของสตริงไบต์:ภาษาการเขียนโปรแกรมบางภาษา (C, Perl, Postscript ฯลฯ ) มีการแสดงข้อความ / กราฟิกใน Octal โดยมี Escape เป็น \ nnn การแทนค่าฐานแปดมีประโยชน์อย่างยิ่งกับไบต์ที่ไม่ใช่ ASCII ของ UTF-8 ซึ่งเข้ารหัสกลุ่ม 6 บิตและจุดเริ่มต้นใด ๆ ที่มีค่าฐานแปด \ 3nn และไบต์ต่อเนื่องใด ๆ มีค่าฐานแปด \ 2nn

  • การคำนวณทางคณิตศาสตร์เบื้องต้น: Octal ยังใช้สำหรับการจุดลอยตัวใน Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) และ Burroughs B7700 (1972)

  • ในทรานสปอนเดอร์:อากาศยานส่งรหัสซึ่งแสดงเป็นตัวเลขสี่แปดหลักเมื่อสอบปากคำด้วยเรดาร์ภาคพื้นดิน รหัสนี้ใช้เพื่อแยกแยะอากาศยานต่าง ๆ บนหน้าจอเรดาร์

อ่านเพิ่มเติม: https://en.wikipedia.org/wiki/Octal


1
ฉันสนุกกับการอ่านรายการ Wikipedia โดยเฉพาะเล็กน้อยเกี่ยวกับการใช้ช่องว่างระหว่างนิ้วมือเพื่อนับ อย่างไรก็ตามส่วนใหญ่บทความอาจกล่าวได้ว่าเป็นแรงผลักดันของคำถามของฉัน ดังที่ฉันสงสัยว่าการแบ่งแยกขนาดของคำที่ใช้ในสถาปัตยกรรมคอมพิวเตอร์ปัจจุบันทำให้การแสดงแปดไม่มีประโยชน์และหนึ่งในย่อหน้าที่คุณอ้างว่าเป็น "16-, 32-, 64- บิตคำ ... " ไม่ชัดเจนเลย คุณช่วยอธิบายได้ไหมว่า“ ไบต์ที่สำคัญที่สุดคือเปื้อนเลขฐานแปดสี่หลัก” และ“ บางแพลตฟอร์มที่มีขนาดคำสองคำที่ยังคงมีคำสั่งย่อย…”
jokinjo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.