ระบบเลขฐานสิบหกคืออะไรและทำไมจึงใช้ในการคำนวณมาก ฉันรู้ว่าคอมพิวเตอร์ใช้ 0 และ 1 เพื่อเก็บข้อมูลดังนั้นทำไมเราจึงใช้เลขฐานสิบหก
ระบบเลขฐานสิบหกคืออะไรและทำไมจึงใช้ในการคำนวณมาก ฉันรู้ว่าคอมพิวเตอร์ใช้ 0 และ 1 เพื่อเก็บข้อมูลดังนั้นทำไมเราจึงใช้เลขฐานสิบหก
คำตอบ:
เลขฐานสิบหกเป็นระบบตัวเลขที่ใช้กันทั่วไปในการคำนวณ คุณอาจเคยได้ยินเลขฐานสองมาก่อนซึ่งมีเพียง 1 และ 0
มนุษย์ส่วนใหญ่ใช้ระบบทศนิยม (ฐาน 10) ซึ่งเรามีตัวเลข 10 ตัว:
0, 1, 2, 3, 4, 5, 6, 7, 8 และ 9
แม้ว่าคอมพิวเตอร์จะไม่ทำงานโดยใช้ระบบทศนิยม พวกเขามีสถานะไบนารี (บางสิ่งบางอย่างเป็นจริงหรือเท็จ) และดังนั้นจึงทำงานในฐาน 2 (เลขฐานสองมักจะนำหน้า 0b) โดยมีตัวเลขเพียง 0 และ 1
ในวันก่อนหน้านี้มีการใช้ฐานแปด (หรือฐาน 8) เป็นเรื่องที่ดีเพราะ "10" ในฐาน 8 คือ "0b1000" ในไบนารี (10 ในทศนิยมคือ 1010 ในไบนารี) เลขฐานแปดมักจะนำหน้า "0o" เมื่อเขียนตัวเลข (แต่จะขึ้นต้นเพียง '0' ในภาษาการเขียนโปรแกรมส่วนใหญ่) มันเรียกว่าฐาน 8 เพราะเรามีตัวเลขแปดตัว
Octal ยังคงถูกใช้อยู่ในปัจจุบันส่วนใหญ่เมื่อตั้งค่าการอนุญาตใน Unix และ Linux
เมื่อเวลาผ่านไปเราต้องการวิธีที่ง่ายกว่าในการแสดงตัวเลขที่มากขึ้นเนื่องจากกำลังในการคำนวณและพื้นที่เพิ่มขึ้นอย่างรวดเร็ว มันกลายเป็นมาตรฐานในการใช้เลขฐานสิบหกหรือฐาน 16 เพราะ 16 เช่น 8 คือพลังของ 2 ซึ่งทำให้ง่ายต่อการแปลงแบบตัวเลขต่อหลัก (ดูความคิดเห็นนี้เพราะมี 16 ตัวเลขตัวอักษรถูกใช้สำหรับ ตัวเลขอื่น ๆ นอกจากนี้เลขฐานสิบหกมักจะนำหน้าด้วย 0x
เลขฐานสิบก็มีประโยชน์เช่นกันเนื่องจากเลขฐานสิบหกคือ 4 บิต (หมายเลขฐานแปด 1 ตัวสามารถแทนค่า 2) ได้ดังนั้นจึงมีตัวเลขสองตัวเป็นไบต์ ในโปรแกรมแก้ไขฐานสิบหกส่วนใหญ่นี่คือวิธีการแสดงไบต์
ในฐาน 10 เรามี 10 ตัวเลข หลังจาก 9 เราจะทำอย่างไร เรามีตัวเลขไม่ครบ เราสร้างสถานที่ "สิบ" ทางด้านซ้ายของหมายเลขเดิมมีที่ 1 และด้านขวาสุดจะกลายเป็น 0 สิ่งเดียวกันเกิดขึ้นในเลขฐานสิบหกเช่นกัน:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, ฯลฯ
จนกว่าเราจะถึง 0x1F แล้วกระบวนการจะทำซ้ำจนถึง 0xFF (255 ในรูปทศนิยม) จากนั้นเราจะได้ 0x100 ข้อมูลเพิ่มเติมเกี่ยวกับการนับสามารถพบได้ที่นี่
นี่คือแผนภูมิที่แสดงการแปลงระหว่างทศนิยมฐานสิบหกฐานแปดและไบนารี:
0
นำหน้าและไม่ใช่0o
สำหรับหมายเลขฐานแปด
ระบบเลขฐานสิบหกคืออะไร
ระบบเลขฐานสิบหกเป็นระบบเลขฐาน 16 ที่ใช้ 16 หลัก ( 0123456789ABCDEF
) ซึ่งต่างจากไบนารีที่ใช้ 2 ( 01
) หรือทศนิยมซึ่งใช้ 10 (0-9) เนื่องจากมีตัวเลขเพียง 10 หลัก (ในระบบของเรา) ตัวอักษรจาก A ถึง F จึงถูกใช้เพื่ออธิบาย "หลัก # 10" "หลัก # 11" เป็นต้น
ทำไมมันใช้มากในการคำนวณ
16 คือกำลังของ 2 ซึ่งทำให้ง่ายต่อการแปลงเลขฐานสิบหกเป็นเลขฐานสองและตามที่คุณระบุไว้ว่า "คอมพิวเตอร์ใช้ 0 และ 1 เพื่อเก็บข้อมูล" เนื่องจากแต่ละหลักเก็บข้อมูล 4 บิตอย่างแม่นยำเลขฐานสิบหกจึงสามารถแปลงเป็นเลขฐานสอง 4 หลัก (1 บิต) ได้อย่างง่ายดายมากและในทางกลับกัน
| hex bin | hex bin |
| 0 0000 | 8 1000 |
| 1 0001 | 9 1001 |
| 2 0010 | A 1010 |
| 3 0011 | B 1011 |
| 4 0100 | C 1100 |
| 5 0101 | D 1101 |
| 6 0110 | E 1110 |
| 7 0111 | F 1111 |
ทำไมเราจึงใช้เลขฐานสิบหก
มันทำให้ง่ายกว่าเลขฐานสองเพื่อแสดงจำนวนมาก ตัวเลขฐานสิบหกสองหลักเท่านั้นที่สามารถเป็นตัวแทนของค่าที่แตกต่างกันได้ 256 ค่าเช่นใน:
dec 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
hex 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 ...
เลขฐานสิบหกสี่หลักสามารถแทนค่า 65536 และอื่น ๆ Hex ทำให้ง่ายต่อการตรวจสอบข้อมูลด้วยสิ่งที่เรียกว่าhexdumpเนื่องจากตัวอักษรตัวเลขและเครื่องหมายวรรคตอนจะถูกจัดเก็บในรูปแบบที่แมปอักขระแต่ละตัวเป็นตัวเลขระหว่าง 0 ถึง 256 (เรียกว่าASCIIหรือบางครั้งใช้การเข้ารหัสอื่น ๆ ) นอกจากนี้รูปแบบไฟล์อื่น ๆ อีกมากมาย (เช่น PNG) ได้รับการปรับแต่งเพื่อให้ข้อมูลแต่ละส่วนที่ไฟล์ประกอบด้วย 256 บิต
โดยสรุป 16 คือพลัง 2 และ 256 เป็นพลัง 16 ทำให้เป็นวิธีที่ดีในการแสดงทั้งเลขฐานสองและข้อความหรือข้อมูลอื่น ๆ
หากคุณมีตัวเลข abcd ดังนั้นสิ่งนี้จะเทียบเท่ากับ ((a * + b) + c) + d ดังนั้นนี่คือ:
ในระบบเลขฐานสิบหกคุณต้องมี 16 หลัก แต่เรามีเพียงสิบหลักเท่านั้น (0..9) ดังนั้นสำหรับตัวเลข 6 ตัวที่ขาดหายไปตัวอักษร A..F จะถูกใช้กับ A = 10, ... , F = 15
แน่นอนคุณยังสามารถนึกถึงระบบตัวเลขอื่น ๆ อีกมากมายเช่นฐาน 5 หรือ 7
สำหรับการคำนวณด้วยตัวเลขมันไม่สำคัญว่าคุณจะใช้ฐานไหน คุณสามารถเพิ่มและทวีคูณในระบบเลขฐานสองคุณสามารถทำได้ในระบบเลขฐานสิบและคุณสามารถทำได้ในระบบเลขฐานสิบหก เราใช้ในการคำนวณในระบบทศนิยมคอมพิวเตอร์ทำมันในระบบเลขฐานสอง
ดังที่ได้กล่าวไว้ข้างต้นมันไม่สำคัญว่าระบบตัวเลขใดที่คุณให้หมายเลข หมายเลขที่อยู่ภายใต้จะเหมือนกันเพียงการเปลี่ยนแปลงการเป็นตัวแทน คอมพิวเตอร์จะจัดเก็บและใช้ตัวเลข (เช่นคำนวณด้วย) ภายในเป็นเลขฐานสองเสมอ
เหตุใดโปรแกรมเมอร์ (เช่นฉัน) จึงใช้ระบบตัวเลขต่างกัน มีเหตุผลสองข้อในการเลือกระบบตัวเลขโดยใช้กำลัง 2 สิ่งแรกคือความสั้นและประการที่สองคือมุมมองที่ดีของการตั้งค่าบิต
ถ้าฉันมีฟังก์ชั่นที่กำลังเขียนเนื้อหาของบัฟเฟอร์ไปยังคอนโซลฉันก็สามารถเขียนโค้ดที่พิมพ์เป็นทศนิยมซึ่งเป็น 1 ถึง 3 หลัก (ทศนิยม: 0..255) ถ้าฉันกำลังเขียนตัวเลขในรูปแบบไบนารีจากนั้นฉันก็จะจบลงด้วยการออก 1 ถึง 8 หลัก (ไบนารี: 0..11111111) ฉันยังสามารถใช้ระบบฐานแปดและท้ายด้วย 1 ถึง 3 หลัก (ฐานแปด: 0..377) หรือเลขฐานสิบหกที่มี 1 ถึง 2 หลัก (เลขฐานสิบหก: 0..ff)
นี่เป็นเพียงหนึ่งไบต์เท่านั้น สมมติว่าคุณต้องการเขียนหมายเลข 32 บิต:
อย่างที่คุณเห็นว่าเอาต์พุตเลขฐานสิบหกนั้นสั้นที่สุด
รูปแบบทั่วไปในการจัดเก็บข้อมูลที่บรรจุคือการใช้แต่ละบิตในไบต์ทีละรายการ ลองดูตัวอย่างไฟล์แอตทริบิวต์ (ดูMDSN ) คุณต้องการแอตทริบิวต์ "hidden", "archive", "readonly", "temporary" และอื่น ๆ คุณสามารถเก็บแต่ละแอตทริบิวต์ในหนึ่งไบต์หรือคุณสามารถแพ็คข้อมูลลงในหนึ่งไบต์ (หรือหลายไบต์) โดยที่แต่ละบิตแสดงถึงหนึ่งแอตทริบิวต์ หากคุณดู dwFlagsAndAttributes ในบทความ MSDN คุณจะเห็นว่า Windows กำลังใช้รูปแบบนี้
ลองอยู่ที่หน้า MSDN FILE_ATTRIBUTE_ENCRYPTED
เป็นตัวอย่างธงนี้คือทศนิยม 16384 และเลขฐานสิบหก 0x4000 "0x" นำหน้าเป็นเพียงการประชุมของโปรแกรมเมอร์ C เพื่อทำเครื่องหมายตัวเลขฐานสิบหกดังนั้นเราจะดูที่ 4000 เมื่อคุณต้องการรู้ว่าบิตใดถูกตั้งค่าจากนั้นคุณจะต้องแปลง 16384 เป็นเลขฐานสองก่อน - ไม่มีอะไรที่คุณจะทำได้ ปกติแล้วจะทำอย่างไรกับการคิดเลขในใจ แต่ลองเลขฐานสิบหก 4000 กันมันค่อนข้างง่าย 16 คือ 2 * 4 ดังนั้นเลขฐานสิบหกทุกตัวคือ 4 บิต ดังนั้นเราแค่แปลง 4 เป็นไบนารี 0100 และเลขศูนย์เป็นไบนารี 0000 แล้วเสร็จ
บ่อยครั้งที่มันไม่ได้เกี่ยวกับบิตส่วนบุคคล แต่โปรแกรมเมอร์มักจะปรับตำแหน่งให้อยู่ในระดับกำลังของ 2 เราชอบที่จะโหลดโปรแกรมไม่ใช่ที่อยู่แบบสุ่ม แต่เป็นที่อยู่ที่มีบิตที่สำคัญน้อยที่สุด 16 บิตที่ตั้งค่าเป็นศูนย์ ด้วยวิธีนี้หากคุณมีที่อยู่ 0x12345678 คุณจะเห็นได้ว่าที่อยู่นี้เป็นของโปรแกรมที่โหลดเป็น 0x1234 และไม่ใช่ที่อยู่ที่โหลดเป็น 0x03810000
นั่นเป็นคำถามของรสชาติ หากคุณต้องการเห็นบิตไบนารี่โดยตรงอาจใช้ได้ สำหรับเลขฐานสองขนาดยาวอาจทำให้คุณหงุดหงิดหากคุณต้องนับตัวเลขเพื่อดูว่ามีการตั้งค่าบิต 23 หรือบิต 24 ไว้หรือไม่ นี่เป็นเลขฐานสิบหกที่ง่ายขึ้นเพราะตัวเลขแต่ละตัวแทน 4 บิตดังนั้นคุณจึงมีส่วนเกี่ยวข้องน้อยลง ส่วนตัวฉันไม่ค่อยได้ใช้ octal มันแปลกมาก
ฐาน 32 คือพลังของ 2 มันยอดเยี่ยมมาก แต่คุณต้องมีตัวเลข 32 หลักเช่น 0..9, A..V นี่คือตัวเลขที่จำได้มากขึ้น (คุณสามารถระบุได้อย่างง่ายดายว่าหมายเลขใดที่จะตอบกลับ) ข้อแม้อื่นคือด้วยฐาน 32 คุณปล่อยคุณลักษณะที่ดีที่เลขฐานสิบหกสองหลักคือหนึ่งไบต์ซึ่งมีประโยชน์จริง ๆ ถ้าคุณดูเนื้อหาของหน่วยความจำ! ด้วยฐาน 32 คุณยังต้องการ 2 หลักเพื่อแทนค่าที่หนึ่งไบต์สามารถมีได้ สำหรับค่า 32 บิตคุณต้องการเพียง 7 หลักแทนที่จะเป็นเลขฐานสิบหก 8 หลัก แต่นั่นก็ไม่มากที่จะอยู่กับข้อเสียของระบบฐาน 32
ระบบการแทนตัวเลขที่ใช้กันในปัจจุบันคือ (= รวม):
ไบนารีฐานแปดฐานสิบและฐานสิบหก
ตัวเลือกใดที่มักจะขึ้นอยู่กับความสะดวกในการใช้งานสำหรับงานที่ต้องทำ
ไบนารี่ถูกใช้ในระบบคอมพิวเตอร์และเทคโนโลยีดิจิตอลโดยทั่วไปเนื่องจากง่ายต่อการเป็นตัวแทนของอุปกรณ์อิเล็กทรอนิกส์ ฟังก์ชั่นสำหรับตัวเลขฐาน 2 นั้นง่ายต่อการสร้างเช่นเดียวกับการเปิด / ปิดจริง / เท็จหรือข้อมูลสองสถานะที่ซ้ำกันอื่น ๆ ที่คล้ายกัน
octalนั้นดีถ้ามีกลุ่มของเลขฐานสองสามหลักเช่นในกรณีที่การตั้งค่าการอนุญาตใน Unix / Linux
การข้ามทศนิยมสักครู่เลขฐานสิบหกก็ดีในลักษณะเดียวกับเลขฐานแปด แต่สำหรับเลขฐานสองสี่หลักและความจริงที่ว่า 8 บิตหนึ่งไบต์เหมาะอย่างยิ่งกับเลขฐานสิบหกสองตัว ( = คำตอบ )
สิ่งนี้ตามมาว่ากลุ่มคู่ -8-bit-group ในคอมพิวเตอร์นั้นเขียนได้ง่ายแสดงและเข้าใจ - นั่นคือ; สะดวกมากในการใช้งานประจำวันเมื่อเขียนซอฟต์แวร์จัดการข้อมูล (เช่นค่าสี rgb ใน HTML / CSS) สร้างโครงสร้างข้อมูลและสิ่งอื่นที่คล้ายคลึงกัน
ทศนิยม อาจเดาได้ว่าระบบทศนิยมพัฒนาจากความจริงที่ว่าเรามีสิบนิ้วและนิ้วเท้า ตัวเลขหนึ่งหลักหมายถึงจำนวนรายการนับหนึ่งสำหรับแต่ละนิ้วจนถึงจำนวนสูงสุดสิบ
สิ่งเหล่านี้แสดงถึงระบบตัวเลขที่มีฐานเป็น:
2, 8, 10 และ 16
โดยทั่วไปฐานจะบอกจำนวน "รายการ" หลักเดียวที่คุณสามารถนับได้เช่นไบนารีมีสองทศนิยมคือสิบ
เนื่องจากเลขฐานสิบหกมี 16 รายการหลักเดียวระบบต้องการ 16 "ตัวเลข" ดังนั้นใช้ 0-9 และ af (6 พิเศษเมื่อเทียบกับทศนิยม) โดยที่ "a" เท่ากับ 10 และ "f" เท่ากับ 15 ในระบบทศนิยม
หากต้องการดำเนินการต่อในโหมดทั่วไป: ฐาน 2 หรือสูงกว่าทำงานได้ดีรวมถึงสิ่งอื่นใดตราบใดที่คุณมีการแสดงตัวเลขหลักเดียว
ตัวเลขในรูปทศนิยมประกอบด้วย:
... d * 10³ + c * 10² + b * 10¹ + a * 10⁰
สำหรับเลขทศนิยม "dcba" - ด้วย d, c, b, a, เลือกจาก 0123456789
ตอนนี้เปลี่ยนเป็น:
... d * base³ + c * base² + b * base¹ + a * base⁰
และคุณมีรูปแบบทั่วไปที่แสดงว่า "ทำงาน" ฐาน 2 หรือสูงกว่าใด ๆ
เช่นตัวเลขห้าหลักฐาน 5 สามารถทำได้อย่างสะดวกสบายเหมือนกับที่อื่น ๆ ข้างต้นหรือทำไมไม่ใช้ระบบ 12 หลัก (หนึ่งโหล) สำหรับเวลา (12 ชั่วโมง = "10" ฐาน 12 พร้อมกับ "ทศนิยม" ตัวแรกที่บอกว่า 1 / 12th [5 นาที] ของชั่วโมงนั้น)
หมายเหตุ: ⁰¹²³ - superscript 0123 หากหน้าจอของคุณแสดงเป็นอย่างอื่น