Java มีวิธีในการเขียนตัวอักษรตัวเลขในฐาน 2, 8, 10 และ 16
ฉันกำลังสงสัยว่าทำไมฐาน 8รวมเช่นint x = 0123;
?
ฉันคิดว่าอาจมีบางสิ่งที่คล้ายกับความจริงที่ว่าเลขฐานสิบหกความจุของหนึ่งไบต์คือFF + 1และอื่น ๆ
Java มีวิธีในการเขียนตัวอักษรตัวเลขในฐาน 2, 8, 10 และ 16
ฉันกำลังสงสัยว่าทำไมฐาน 8รวมเช่นint x = 0123;
?
ฉันคิดว่าอาจมีบางสิ่งที่คล้ายกับความจริงที่ว่าเลขฐานสิบหกความจุของหนึ่งไบต์คือFF + 1และอื่น ๆ
คำตอบ:
คำตอบนี้ถูกเขียนขึ้นสำหรับคำถามเดิม"ทำไมการเขียนตัวเลขในฐาน 8 จึงมีประโยชน์"
มันคือการทำให้ภาษาคุ้นเคยกับผู้ที่รู้จัก C ฯลฯ ดังนั้นคำถามคือทำไมจึงสนับสนุนพวกเขา!
มีสถาปัตยกรรม (PDP ต่างๆ) ซึ่งใช้คำกว้าง 18 บิต (และคำอื่น ๆ ใช้ 36 บิตคำ) ดังนั้นตัวอักษรที่ตัวอักษรที่มีความกว้าง 3 บิตจะเป็นประโยชน์
จวนเพียงวางฉันได้เห็นมันใช้ในรหัส Java เป็นสำหรับการระบุสิทธิ์ยูนิกซ์สไตล์เช่น0777
, 0644
ฯลฯ
(คำตอบแบบปากต่อปากว่าทำไมมันถึงได้รับการสนับสนุนคือ "รับ upvotes สำหรับคำถามนี้ ")
"เลขฐานแปดไม่เหมือนที่เคยเป็นอย่างไรก็ตาม Octal จะใช้เมื่อจำนวนบิตในหนึ่งคำมีค่าเท่ากับ 3 นอกจากนี้ยังใช้เป็นชวเลขสำหรับแสดงสิทธิ์ของไฟล์บนระบบ UNIX และการเป็นตัวแทนของ หมายเลข UTF8 เป็นต้น "
ประวัติศาสตร์คอมพิวเตอร์ (วิทยาศาสตร์) เพื่อเป็นตัวแทน 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บิตและการจัดการ)
คำตอบเดิมสำหรับ "หมายเลขฐานแปด (ฐาน 8) ใช้เพื่ออะไร"
เป็นตัวย่อของไบนารี:สำหรับเครื่องคำนวณ (เช่น 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