แปลงเลขฐานสองเป็นฐานสิบอย่างไร?
นำแต่ละหลักของเลขฐานสองคูณด้วย 2 ยกกำลังตำแหน่งของมัน (เริ่มจาก 0 ทางขวาสุด) แล้วบวกผลลัพธ์ทั้งหมดเข้าด้วยกัน ตัวอย่างเช่น 1011 ในฐานสอง = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11 ในฐานสิบ
ทำไมจึงใช้เลขฐานสิบหกในงานคอมพิวเตอร์?
เลขฐานสิบหก (ฐาน 16) สอดคล้องกับเลขฐานสองได้อย่างลงตัว เพราะแต่ละหลักของฐานสิบหกแทนค่าได้ตรง 4 บิตพอดี ทำให้เป็นวิธีที่กระชับและอ่านง่ายสำหรับมนุษย์ในการเขียนที่อยู่หน่วยความจำ รหัสสี และค่าไบต์ โดยไม่ต้องใช้ความยาวแบบเลขฐานสองล้วน
หลักที่ถูกต้องในแต่ละฐานมีอะไรบ้าง?
ฐานสองใช้ 0-1 ฐานแปดใช้ 0-7 ฐานสิบใช้ 0-9 และฐานสิบหกใช้ 0-9 บวกกับ A-F (แทนค่า 10-15) หากป้อนหลักที่อยู่นอกช่วงนี้สำหรับฐานที่เลือก ระบบจะแสดงข้อผิดพลาด
สามารถแปลงเลขติดลบหรือเลขทศนิยมที่มีเศษส่วนได้หรือไม่?
เครื่องมือนี้แปลงเฉพาะจำนวนเต็มที่ไม่ติดลบ ซึ่งครอบคลุมกรณีการใช้งานส่วนใหญ่ในงานเขียนโปรแกรม เครือข่าย และงานเรียน สำหรับการแทนค่าเลขฐานสองแบบมีเครื่องหมายหรือมีเศษส่วน จำเป็นต้องใช้เครื่องมือเฉพาะทาง เช่น two's-complement หรือจุดลอยตัว
แปลงรหัสสีฐานสิบหก (เช่น #FF5733) เป็น RGB อย่างไร?
รหัสสีฐานสิบหกก็คือเลขฐานสิบหกสองหลักจำนวนสามตัวรวมกัน นั่นคือ สีแดง สีเขียว และสีน้ำเงิน แบ่ง #FF5733 ออกเป็น FF, 57 และ 33 แล้วแปลงแต่ละคู่เป็นฐานสิบ: FF = 255, 57 = 87 และ 33 = 51 ได้ผลลัพธ์ rgb(255, 87, 51) แต่ละคู่มีค่าตั้งแต่ 00 (0) ถึง FF (255) ดังนั้นสีที่เป็นไปได้ทั้งหมด 16,777,216 สีจึงเขียนแทนด้วยเลขฐานสิบหก 6 หลักได้ทุกสี นี่คือเหตุผลที่ CSS ใช้เลขฐานสิบหกอย่างแพร่หลาย — เพราะกระชับ และแต่ละคู่สอดคล้องกับไบต์ที่เบราว์เซอร์จัดเก็บสำหรับช่องสีนั้นโดยตรง
two's complement คืออะไร และมันแทนเลขฐานสองติดลบได้อย่างไร
Two's complement เป็นวิธีมาตรฐานที่คอมพิวเตอร์ใช้จัดเก็บจำนวนเต็มติดลบ ในการกลับเครื่องหมาย ให้พลิกทุกบิตแล้วบวก 1: สำหรับ +5 ในรูปแบบ 8 บิต (00000101) พลิกบิตได้ (11111010) แล้วบวก 1 จะได้ 11111011 ซึ่งแทน −5 บิตซ้ายสุดทำหน้าที่เป็นตัวบอกเครื่องหมาย — 0 หมายถึงไม่ติดลบ, 1 หมายถึงติดลบ — โดยยังคงวงจรรวมเข้าด้วยกันสำหรับทั้งสองเครื่องหมาย ค่า two's complement 4 บิตจะมีช่วงตั้งแต่ −8 ถึง +7 แทนที่จะเป็น 0 ถึง 15 เพราะครึ่งหนึ่งของช่วงถูกใช้สำหรับจำนวนติดลบ เครื่องมือนี้แปลงจำนวนเต็มที่ไม่ติดลบ สำหรับค่าติดลบคุณสามารถใช้ two's complement กับผลลัพธ์ไบนารีเองได้
ทำไมตัวแปลงของฉันถึงแสดงเลขศูนย์นำหน้าเกินจำเป็นในเลขฐานสอง?
เลขศูนย์นำหน้าไม่เคยเปลี่ยนค่าของตัวเลข — 0011 และ 11 เป็นเลขฐานสิบ 3 เหมือนกัน — แต่ปกติแล้วมักแสดงโดยตั้งใจ โปรแกรมเมอร์จัดกลุ่มเลขฐานสองเป็นนิบเบิล (4 บิต) หรือไบต์ (8 บิต) เพื่อให้รูปแบบสอดคล้องกับเลขฐานสิบหก: 0011 0011 อ่านได้เป็น 33 ในฐานสิบหก ในขณะที่ 110011 ที่ไม่จัดกลุ่มแยกยากกว่า บางเครื่องมือเติมศูนย์จนได้ความกว้างคงที่ (8, 16 หรือ 32 บิต) เพื่อให้สะท้อนรีจิสเตอร์จริงในคอมพิวเตอร์ หากคุณต้องการรูปแบบที่สั้นที่สุด เพียงตัดเลขศูนย์นำหน้าออกจากผลลัพธ์ — ค่ายังคงเดิม
เลขฐานแปดถูกใช้กับสิทธิ์การเข้าถึงไฟล์ Unix (chmod) อย่างไร
สิทธิ์ Unix ประกอบด้วยสามกลุ่ม — อ่าน (r) เขียน (w) และเรียกใช้ (x) — สำหรับเจ้าของ กลุ่ม และผู้ใช้กลุ่มอื่น แต่ละกลุ่มคือเลขฐานสอง 3 บิต จึงตรงกับเลขฐานแปดหนึ่งหลัก: rwx = 7, rw- = 6, r-x = 5, r-- = 4 คำสั่ง chmod 755 จึงกำหนดให้เจ้าของมี rwx กลุ่มมี r-x และผู้ใช้กลุ่มอื่นมี r-x — นี่คือเหตุผลที่ 7, 5, 5 ปรากฏเป็นเลขฐานแปดสามหลัก เลขฐานแปดเป็นรูปแบบที่เหมาะสมที่นี่ เพราะแต่ละหลักครอบคลุม 3 บิตพอดี ตรงกับตำแหน่งสิทธิ์สามตำแหน่งของแต่ละฝ่าย
เครื่องมือนี้แปลงตัวเลขที่ใหญ่มากได้โดยไม่สูญเสียความแม่นยำหรือไม่?
ตัวแปลงนี้แม่นยำสำหรับจำนวนเต็มทุกค่าสูงถึง 2^53 − 1 = 9,007,199,254,740,991 ซึ่งเป็นจำนวนเต็มที่ใหญ่ที่สุดที่ JavaScript แทนค่าได้อย่างแม่นยำ ค่าที่เกินขีดจำกัดนี้อาจถูกปัดให้เป็นจำนวนที่แทนค่าได้ใกล้เคียงที่สุด ดังนั้นผลลัพธ์อาจคลาดเคลื่อนจากการแปลงที่แม่นยำ สำหรับงานทั่วไป — รหัสสี ที่อยู่หน่วยความจำ subnet mask ของ IP หมายเลขพอร์ต และตัวเลขในงานเรียน — ช่วงนี้มากเกินพอ หากคุณต้องการแปลงเกิน 53 บิต คุณจะต้องใช้เครื่องมือความแม่นยำตามอำเภอใจมากกว่าตัวแปลงในเบราว์เซอร์มาตรฐาน
แปลงเลขฐานสิบเป็นฐานสองด้วยมืออย่างไร?
นำตัวเลขมาหารด้วย 2 ซ้ำ ๆ โดยจดเศษที่เหลือในแต่ละขั้น จากนั้นอ่านเศษจากล่างขึ้นบน สำหรับ 47: 47 ÷ 2 = 23 เศษ 1, 23 ÷ 2 = 11 เศษ 1, 11 ÷ 2 = 5 เศษ 1, 5 ÷ 2 = 2 เศษ 1, 2 ÷ 2 = 1 เศษ 0, 1 ÷ 2 = 0 เศษ 1 อ่านเศษจากล่างขึ้นบนได้ 101111 ซึ่งเท่ากับ 32 + 8 + 4 + 2 + 1 = 47 วิธีการหารซ้ำแบบเดียวกันนี้ใช้ได้กับทุกฐาน — หารด้วย 8 สำหรับฐานแปด หารด้วย 16 สำหรับฐานสิบหก — โดยเก็บเศษในลำดับย้อนกลับ
แปลงระหว่างฐานสองและฐานสิบหกโดยตรงโดยไม่ผ่านฐานสิบอย่างไร?
เพราะเลขฐานสิบหกหนึ่งหลักเท่ากับ 4 บิตพอดี คุณจึงแปลงได้โดยไม่ต้องผ่านฐานสิบ จัดกลุ่มเลขฐานสองเป็นชุดละสี่จากทางขวา แล้วแปลงแต่ละกลุ่มเป็นหลักฐานสิบหก: 101111 → 0010 1111 → 2F แต่ละกลุ่ม 4 บิตแทนสัญลักษณ์ฐานสิบหกหนึ่งตัว (0000=0 ไปจนถึง 1111=F) ในทางกลับกัน ขยายเลขฐานสิบหกแต่ละหลักออกเป็นสี่บิต: 2F → 0010 1111 เทคนิคลัดเดียวกันนี้ใช้กับฐานแปด ซึ่งจับคู่กับฐานสองเป็นกลุ่มละสามบิต — นี่คือเหตุผลที่ฐานสอง ฐานแปด และฐานสิบหกแปลงหากันได้อย่างง่ายดาย