ตัวแปลงระบบตัวเลข พร้อมรองรับจำนวนเต็มลบ | BIN HEX DEC OCT
โลกของคอมพิวเตอร์ทำงานด้วยศูนย์และหนึ่ง แต่ผู้คนคิดเป็นเลขฐานสิบ แล้วนักพัฒนาล่ะ? พวกเขาต้องเข้าใจทุกอย่างที่อยู่ระหว่างนั้น ไม่ว่าคุณจะดีบั๊กโค้ดระดับต่ำ, ตั้งค่าสีใน CSS, คำนวณ IP masks หรือแก้ปัญหาในวิชาวิทยาการคอมพิวเตอร์ คุณก็ต้องแปลงตัวเลขระหว่างระบบฐานต่างๆ
เครื่องคิดเลขทั่วไปใน Windows หรือบนมือถือมักจะช้าและใช้งานไม่สะดวก ตัวแปลงระบบตัวเลขอัจฉริยะ ของเราได้รับการออกแบบโดยนักพัฒนาเพื่อนักพัฒนาโดยเฉพาะ ให้การแปลงค่าแบบเรียลไทม์ทันที รองรับตัวเลขขนาดใหญ่พิเศษ และเป็นหนึ่งในเครื่องมือออนไลน์ไม่กี่ตัวที่ จัดการจำนวนลบในรูปแบบไบนารีได้อย่างถูกต้อง
ตัวแปลงระบบตัวเลขนี้ทำอะไรได้บ้าง?
ในการพัฒนาวิดเจ็ตนี้ เรามุ่งเน้นที่การแก้ไขปัญหาที่พบบ่อยที่สุดของนักพัฒนาโปรแกรม:
- ตอบสนองแบบเรียลไทม์: ไม่มีปุ่ม “คำนวณ” เพียงแค่เริ่มพิมพ์ลงในช่อง HEX คุณก็จะเห็นค่า BIN และ DEC เปลี่ยนแปลงทันที
- รองรับจำนวนลบ (Signed Integers): ตัวแปลงออนไลน์ส่วนใหญ่จะล้มเหลวเมื่อคุณพิมพ์
-5แต่ของเราไม่เป็นเช่นนั้น ด้วยตัวเลือก ความกว้างบิต (8, 16, 32, 64 บิต) เราจำลองพฤติกรรมของโปรเซสเซอร์โดยใช้ Two’s Complement - ความสามารถในการอ่านโค้ดไบนารี: การมอง
1110101011011110ทำให้ปวดตา เครื่องมือของเราสามารถจัดรูปแบบเอาต์พุตโดยอัตโนมัติทุก 4 บิต (nibbles) เป็น1110 1010 1101 1110ซึ่งช่วยลดข้อผิดพลาดในการคัดลอกได้อย่างมาก - รองรับ BigInt: ต้องการแปลงตัวเลข 64 บิต หรือค่าแฮชหรือไม่? JavaScript มาตรฐานจำกัดอยู่ที่ $2^{53}$ แต่เอนจินของเราสามารถจัดการตัวเลขที่มีความยาวเท่าใดก็ได้ในโหมด “Unsigned”
คู่มือระบบตัวเลข: ควรใช้แบบใดเมื่อใด?
1. เลขฐานสิบ (DEC - Decimal)
- ฐาน: 10 (ตัวเลข 0-9)
- การใช้งาน: ชีวิตประจำวัน, การเงิน, การนับวนลูปในโค้ด
- ข้อเท็จจริง: คอมพิวเตอร์ไม่เข้าใจ ต้องแปลงเป็นไบนารีก่อน
2. เลขฐานสอง (BIN - Binary)
- ฐาน: 2 (ตัวเลข 0, 1)
- การใช้งาน: Machine code, Logical gates, การทำ IP masking
- เคล็ดลับ: แต่ละหลักแทน 1 บิต 8 บิต เท่ากับ 1 ไบต์ (Byte)
3. เลขฐานสิบหก (HEX - Hexadecimal)
- ฐาน: 16 (ตัวเลข 0-9, ตัวอักษร A-F)
- การใช้งาน: การเขียนโค้ดไบนารีแบบกระชับ อักขระ HEX หนึ่งตัวแทน 4 บิต (nibble) สองอักขระ (เช่น
FF) แทนไบต์เต็ม - ตัวอย่าง:
- สีบนเว็บ:
#FF5733(แดง, เขียว, น้ำเงิน) - MAC Address:
00:1A:2B:3C:4D:5E - Memory dumps
- สีบนเว็บ:
4. เลขฐานแปด (OCT - Octal)
- ฐาน: 8 (ตัวเลข 0-7)
- การใช้งาน: คอมพิวเตอร์รุ่นเก่า, ปัจจุบันส่วนใหญ่ใช้ใน สิทธิ์ของ Linux (chmod)
- ตัวอย่าง: คำสั่ง
chmod 755ตั้งค่าสิทธิ์เป็น rwx-rx-rx (อ่าน, เขียน, รัน)
วิธีจัดการกับจำนวนเต็มลบอย่างถูกต้อง?
นี่คือฟังก์ชันที่ซับซ้อนที่สุดของตัวแปลงของเรา ในหน่วยความจำคอมพิวเตอร์ไม่มีเครื่องหมาย “ลบ” ในการจัดเก็บจำนวนลบ คอมพิวเตอร์มักจะใช้วิธี Two’s Complement
แต่ผลลัพธ์ของการแปลงจำนวนลบขึ้นอยู่กับจำนวนบิตที่ตัวแปรสำรองไว้ ดังนั้นคุณจะพบสวิตช์ ความลึกบิต ที่แถบด้านบน
ตัวอย่าง: ตัวเลข -5 มีลักษณะอย่างไร?
ลองด้วยตัวคุณเองในตัวแปลงของเรา:
-
ตั้งค่าความกว้างเป็น 8-bit
- ป้อนใน DEC:
-5 - ผลลัพธ์ HEX:
FB - ผลลัพธ์ BIN:
1111 1011 - คำอธิบาย: $256 - 5 = 251$ (ซึ่งคือ FB)
- ป้อนใน DEC:
-
ตั้งค่าความกว้างเป็น 16-bit
- ป้อนใน DEC:
-5 - ผลลัพธ์ HEX:
FFFB - คำอธิบาย: เนื่องจากมีพื้นที่มากขึ้น, “หนึ่ง” จะเติมเต็มพื้นที่ที่เหลือทางด้านซ้าย
- ป้อนใน DEC:
-
ตั้งค่าความกว้างเป็น เฉพาะจำนวนเต็มบวก (Unsigned)
- หากคุณป้อน
-5ช่องจะเปลี่ยนเป็นสีแดง โหมดนี้ไม่รองรับจำนวนลบ เนื่องจากจะต้องการเลขหนึ่งจำนวนอนันต์
- หากคุณป้อน
เคล็ดลับสำหรับมืออาชีพ: หากคุณทำงานกับสีหรือที่อยู่ IP ให้ใช้โหมด “เฉพาะจำนวนเต็มบวก” เสมอ หากคุณกำลังทำงานที่เกี่ยวข้องกับ C/C++ หรือ Assembler ให้เปลี่ยนเป็น 32-bit หรือ 64-bit
ตารางการแปลงอย่างรวดเร็ว (Cheat Sheet)
เพื่อการอ้างอิงอย่างรวดเร็ว นี่คือค่าพื้นฐานที่ “IT” ทุกคนควรรู้จำให้ขึ้นใจ
| เลขฐานสิบ (DEC) | เลขฐานสิบหก (HEX) | เลขฐานสอง (BIN) | หมายเหตุ |
|---|---|---|---|
| 0 | 00 | 0000 | ศูนย์ |
| 1 | 01 | 0001 | |
| 10 | 0A | 1010 | |
| 15 | 0F | 1111 | ค่าสูงสุดสำหรับ 4 บิต (Nibble) |
| 16 | 10 | 0001 0000 | |
| 127 | 7F | 0111 1111 | ค่าสูงสุดสำหรับ signed 8-bit (char) |
| 255 | FF | 1111 1111 | ค่าสูงสุดสำหรับ unsigned 8-bit (byte) |
| 65 535 | FFFF | … | ค่าสูงสุดสำหรับ 16-bit |
คำถามที่พบบ่อย (FAQ)
"ความลึกบิต" หมายความว่าอย่างไร?
ระบุว่าเราได้สำรองหน่วยความจำไว้เท่าใดสำหรับตัวเลขนั้น- 8-bit: ค่า 0 ถึง 255 (หรือ -128 ถึง 127) เทียบเท่ากับประเภท
charหรือbyte - 16-bit: ค่าสูงสุด 65,535 เทียบเท่ากับประเภท
short - 32-bit:
intมาตรฐานในภาษาโปรแกรมสมัยใหม่ - 64-bit: สำหรับตัวเลขขนาดใหญ่มาก (
long long,BigInt)
ทำไมตัวเลข 255 ใน HEX ถึงเขียนเป็น FF?
เลขฐานสิบหกมี 16 หลัก (0-9 และ A-F) โดย F มีค่าเท่ากับ 15 ตัวเลขFF คำนวณได้ดังนี้: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$
จะแปลงสี HEX เป็น RGB ได้อย่างไร?
สีบนเว็บ เช่น#E05412 ประกอบด้วยสามไบต์: แดง (E0), เขียว (54), น้ำเงิน (12)
ป้อน "E0" ในช่อง HEX ของตัวแปลงของเรา -> คุณจะได้ 224
ป้อน "54" -> คุณจะได้ 84
ป้อน "12" -> คุณจะได้ 18
ผลลัพธ์คือ rgb(224, 84, 18)
0x, 0b หรือ 0o หมายถึงอะไร?
เพื่อให้นักพัฒนาแยกแยะระบบตัวเลข พวกเขาใช้คำนำหน้าดังนี้:0x= เลขฐานสิบหก (เช่น 0xFF)0b= เลขฐานสอง (เช่น 0b101)0o= เลขฐานแปด (เช่น 0o755)
ทำไมช่องถึงเปลี่ยนเป็นสีแดง?
นี่คือฟังก์ชันตรวจสอบความถูกต้องของข้อมูล ซึ่งหมายความว่าคุณได้ป้อนอักขระที่ไม่เป็นของระบบตัวเลขนั้นๆ ตัวอย่างเช่น:- ตัวอักษร "G" ใน HEX (อนุญาตเฉพาะ A-F)
- ตัวเลข "2" ใน BIN (อนุญาตเฉพาะ 0 และ 1)
- ตัวเลข "8" ใน OCT (อนุญาตเฉพาะ 0-7)