เครื่องคำนวณการแปลงเลขฐาน
แปลงจำนวนเต็มเป็นเลขฐานสอง ฐานแปด ฐานสิบ และฐานสิบหก
วิธีใช้งานเครื่องคำนวณการแปลงฐานเลขนี้
- ป้อนจำนวนเต็ม
พิมพ์จำนวนเต็มที่ไม่เป็นลบลงในช่องจำนวนเต็ม (เช่น 255 หรือ 4096)
- อ่านค่าเลขฐานสอง
ผลลัพธ์ค่าฐานสองแสดงการแทนค่าในระบบเลขฐาน 2
- ตรวจสอบเลขฐานแปดและฐานสิบหก
ตรวจสอบผลลัพธ์เลขฐานแปดและฐานสิบหกสำหรับการแทนค่าที่กระชับ
- ตรวจสอบเลขฐานสิบ
ผลลัพธ์เลขฐานสิบช่วยยืนยันค่าเริ่มต้นเพื่อการตรวจสอบความถูกต้อง
วิธีการทำงานของเครื่องคำนวณการแปลงฐานเลขนี้
เครื่องคำนวณการแปลงฐานเลขนี้จะรับจำนวนเต็มในระบบเลขฐานสิบ (base 10) และแสดงผลในรูปแบบเลขฐานสอง (base 2), เลขฐานแปด (base 8) และเลขฐานสิบหก (base 16) ซึ่งเป็นระบบตัวเลขสี่ระบบที่ใช้บ่อยที่สุดในด้านคอมพิวเตอร์ ระบบตัวเลขตามตำแหน่งทุกระบบทำงานในลักษณะเดียวกัน คือตำแหน่งของแต่ละหลักจะแทนเลขยกกำลังของฐานที่เพิ่มขึ้นตามลำดับ และค่าของตัวเลขคือผลรวมของแต่ละหลักคูณด้วยค่าน้ำหนักตามตำแหน่ง การแปลงระหว่างฐานเลขเป็นการดำเนินการพื้นฐานในการเขียนโปรแกรมระดับต่ำ, การออกแบบตรรกะดิจิทัล, วิศวกรรมเครือข่าย (ที่อยู่ MAC และ IPv6), รหัสสีใน CSS, การกำหนดสิทธิ์ไฟล์ใน Unix และการตรวจสอบที่อยู่หน่วยความจำระหว่างการดีบั๊ก
การหารซ้ำ: หาร N ด้วยฐานเป้าหมาย R บันทึกเศษที่เหลือ ทำซ้ำกับผลหารจนกว่าจะเป็น 0 จากนั้นอ่านเศษที่เหลือย้อนกลับจากล่างขึ้นบน แปลงเลขฐานสิบ 255 เป็นฐานสอง, ฐานแปด และฐานสิบหก สำหรับฐานสอง (R = 2): 255 ÷ 2 = 127 เศษ 1, 127 ÷ 2 = 63 เศษ 1, 63 ÷ 2 = 31 เศษ 1, 31 ÷ 2 = 15 เศษ 1, 15 ÷ 2 = 7 เศษ 1, 7 ÷ 2 = 3 เศษ 1, 3 ÷ 2 = 1 เศษ 1, 1 ÷ 2 = 0 เศษ 1 เมื่ออ่านเศษจากล่างขึ้นบนจะได้: 11111111 สำหรับฐานแปด (R = 8): 255 ÷ 8 = 31 เศษ 7, 31 ÷ 8 = 3 เศษ 7, 3 ÷ 8 = 0 เศษ 3 → 377 สำหรับฐานสิบหก (R = 16): 255 ÷ 16 = 15 เศษ 15 (F), 15 ÷ 16 = 0 เศษ 15 (F) → FF
ฐานสิบ 4096 → ฐานสอง 1000000000000, ฐานแปด 10000, ฐานสิบหก 1000 มีประโยชน์ในการทำความเข้าใจว่า 4 KiB = 4096 ไบต์
ฐานสิบ 15 → ฐานสอง 1111, ฐานแปด 17, ฐานสิบหก F โดยแต่ละหลักของฐานสิบหกจะตรงกับสี่บิตพอดี เช่น F = 1111
- ✓ ข้อมูลนำเข้าต้องเป็นจำนวนเต็มที่ไม่เป็นลบ (ศูนย์หรือจำนวนเต็มบวก) ค่าทศนิยมและจำนวนลบต้องใช้อัลกอริทึมเพิ่มเติม (เช่น two's complement สำหรับเลขฐานสองแบบมีเครื่องหมาย) ซึ่งอยู่นอกเหนือขอบเขตของเครื่องมือนี้
- ✓ เลขฐานสิบหกที่มากกว่า 9 จะแทนด้วยตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่ A–F ตามมาตรฐานสากลในภาษาโปรแกรม, RFC และเอกสารทางฮาร์ดแวร์ส่วนใหญ่
- ✓ เลขศูนย์นำหน้าจะถูกละไว้ในผลลัพธ์ สำหรับการแสดงผลแบบความกว้างคงที่ (เช่น ฐานสองขนาด 8 บิต หรือ 32 บิต) โปรดเติมเลขศูนย์ด้วยตนเองเพื่อให้ได้ความกว้างที่ต้องการ
- ✓ เครื่องคำนวณนี้รองรับเฉพาะจำนวนเต็มที่ไม่เป็นลบเท่านั้น ค่าที่สูงกว่า 2^53 − 1 (JavaScript's Number.MAX_SAFE_INTEGER) จะไม่ได้รับการยอมรับ เพื่อให้ตัวเลขที่แสดงยังคงความแม่นยำสูงสุด
- เลขฐานสิบหกแต่ละหลักจะตรงกับเลขฐานสอง 4 หลัก (บิต) และเลขฐานแปดแต่ละหลักจะตรงกับเลขฐานสอง 3 บิต ความสัมพันธ์นี้ช่วยให้การแปลงค่าในใจระหว่างฐานสิบหก ฐานแปด และฐานสองทำได้รวดเร็วเมื่อคุณจดจำรูปแบบ nibble ทั้ง 16 แบบได้
- ค่าที่พบบ่อยและควรจดจำ: 0xFF = 255, 0x100 = 256, 0xFFFF = 65535, 0xFFFFFFFF = 4,294,967,295 (ค่าสูงสุดของจำนวนเต็ม 32 บิตแบบไม่มีเครื่องหมาย)
- สิทธิ์การเข้าถึงไฟล์ของ Unix ใช้เลขฐานแปด: 755 หมายถึง rwxr-xr-x (เจ้าของอ่าน/เขียน/ประมวลผล, กลุ่มและผู้อื่นอ่าน/ประมวลผล) เลขฐานแปดแต่ละหลักจะเข้ารหัสบิตสิทธิ์สามบิต
- รหัสสี CSS แบบฐานสิบหกคือค่าไบต์เลขฐานสิบหกสามค่าที่ต่อกัน ซึ่งแทนช่องสีแดง เขียว และน้ำเงิน เช่น #FF8800 คือสีแดง 255, เขียว 136, น้ำเงิน 0
- ทฤษฎีระบบตัวเลขตามตำแหน่ง — Knuth, D. E., The Art of Computer Programming, เล่ม 2: Seminumerical Algorithms, ส่วนที่ 4.1
- IEEE 754-2019 — มาตรฐานสำหรับเลขคณิตทศนิยม (บริบทการแทนค่าจำนวนเต็ม)
- RFC 4291 — สถาปัตยกรรมการกำหนดที่อยู่ IP เวอร์ชัน 6 (สัญกรณ์เลขฐานสิบหกสำหรับ IPv6)
ทำความเข้าใจระบบตัวเลขในการประมวลผลคอมพิวเตอร์
ระบบตัวเลขตามตำแหน่งทุกระบบใช้ฐาน (radix) และกำหนดน้ำหนักให้แต่ละหลักตามตำแหน่ง ในระบบเลขฐานสิบ (ฐาน 10) หลักขวาสุดคือหลักหน่วย ถัดมาคือหลักสิบ และหลักร้อย ระบบเลขฐานสอง (ฐาน 2) ใช้เพียง 0 และ 1 ซึ่งสอดคล้องโดยตรงกับสถานะเปิด/ปิดของทรานซิสเตอร์ ระบบเลขฐานแปด (ฐาน 8) จัดกลุ่มสามบิตต่อหนึ่งหลัก และระบบเลขฐานสิบหก (ฐาน 16) จัดกลุ่มสี่บิตต่อหนึ่งหลัก โดยใช้ A–F แทนค่า 10–15 การแปลงระหว่างฐานใช้วิธีการหารซ้ำ: หารตัวเลขด้วยฐานที่ต้องการ บันทึกเศษ หารผลลัพธ์ต่อไปจนกว่าจะเป็นศูนย์ จากนั้นอ่านเศษย้อนกลับ อัลกอริทึมนี้เป็นพื้นฐานของการแปลงฐานทั้งหมดในการเขียนโปรแกรม
กรณีการใช้งานจริงของการแปลงฐานสำหรับนักพัฒนา
นักพัฒนาใช้การแปลงฐานเมื่อตรวจสอบ memory dump, ดีบักการดำเนินการระดับบิต (bitwise), ตีความสิทธิ์ของไฟล์ และทำงานกับรหัสสี สิทธิ์ของไฟล์ใน Unix (เช่น 755) เป็นเลขฐานแปด: แต่ละหลักจะเข้ารหัสการอ่าน/เขียน/ประหาร (read/write/execute) สำหรับเจ้าของ กลุ่ม และผู้อื่น รหัสสี CSS hex เช่น #FF8800 คือไบต์สามชุดที่ต่อกันในรูปแบบฐานสิบหก ที่อยู่ IPv6 เขียนในรูปฐานสิบหก Bitmask และ flag มักแสดงในรูปฐานสิบหกเพื่อให้อ่านง่าย (0xFF สำหรับ byte mask, 0xFFFF สำหรับ 16 บิต) เมื่อดีบักโค้ดระดับต่ำหรือโปรโตคอลเครือข่าย การแปลงระหว่างฐานสิบ ฐานสิบหก และฐานสองจะช่วยให้เห็นรูปแบบบิตที่อยู่เบื้องหลังได้อย่างรวดเร็ว
คำถามที่พบบ่อยเกี่ยวกับเครื่องคำนวณการแปลงฐานเลข
ทำไมจึงมีการใช้เลขฐานสอง ฐานแปด และฐานสิบหกในระบบคอมพิวเตอร์?
เลขฐานสองเชื่อมโยงโดยตรงกับสถานะเปิด/ปิดของทรานซิสเตอร์ ทำให้เป็นภาษาหลักของฮาร์ดแวร์ เลขฐานแปดและฐานสิบหกเป็นตัวย่อที่กะทัดรัดสำหรับเลขฐานสอง โดยเลขฐานสิบหกหนึ่งหลักแทนค่าสี่บิตพอดี และเลขฐานแปดหนึ่งหลักแทนค่าสามบิต โปรแกรมเมอร์จึงใช้เลขเหล่านี้เพื่อแสดงที่อยู่ bitmask และรหัสสีได้กระชับกว่าสตริงเลขฐานสองที่ยาวเหยียด
ฉันจะแปลงในทิศทางอื่นได้อย่างไร (เช่น จากฐานสิบหกเป็นฐานสิบ)?
คูณตัวเลขแต่ละหลักด้วยเลขฐานยกกำลังตามตำแหน่งแล้วนำผลลัพธ์มารวมกัน ตัวอย่างเช่น เลขฐานสิบหก 1A3 = 1×16² + 10×16¹ + 3×16⁰ = 256 + 160 + 3 = 419 ในเลขฐานสิบ
จะเกิดอะไรขึ้นกับตัวเลขที่มีค่ามาก?
เครื่องคำนวณรองรับค่าสูงสุดไม่เกินขีดจำกัดจำนวนเต็มที่ปลอดภัยของ JavaScript: 2^53 − 1 (9,007,199,254,740,991) ตัวเลขที่มากกว่านี้จะถูกปฏิเสธเนื่องจากอาจสูญเสียความแม่นยำของหลักที่มีนัยสำคัญน้อยที่สุดในเบราว์เซอร์
ฉันสามารถแปลงเลขติดลบหรือเศษส่วนได้หรือไม่?
เครื่องมือนี้รองรับจำนวนเต็มที่ไม่เป็นลบ ในทางคอมพิวเตอร์ จำนวนเต็มลบมักจะแสดงด้วย two's complement ในขนาดบิตที่คงที่ และค่าเศษส่วนจะใช้การเข้ารหัสทศนิยมแบบ IEEE 754 ซึ่งทั้งสองอย่างนี้ต้องใช้พารามิเตอร์เพิ่มเติมที่เครื่องคำนวณนี้ไม่ได้เก็บข้อมูล
ทำไมคำนำหน้า 0x ถึงปรากฏในโค้ดแต่ไม่ปรากฏในผลลัพธ์?
คำนำหน้า 0x (และ 0b สำหรับฐานสอง, 0o สำหรับฐานแปด) คือไวยากรณ์เฉพาะของภาษาโปรแกรมที่บอกคอมไพเลอร์หรืออินเทอร์พรีเตอร์ว่ากำลังใช้เลขฐานใด เครื่องคำนวณนี้จะแสดงผลเป็นชุดตัวเลขดิบโดยไม่มีคำนำหน้า เพื่อให้สามารถนำไปใช้งานต่อได้ในทุกบริบท