ระบบเลขและการแปลง
แนะนำใหม่| English | ความหมาย |
|---|---|
| byte/baɪt/ | ไบต์ |
| denary/ˈdiːnəri/ | ระบบเลขฐานสิบ |
| binary/ˈbaɪnəri/ | ระบบเลขฐานสอง |
| bit/bɪt/ | บิต |
| nibble/ˈnɪbl/ | HALF BYTE |
| hexadecimal/ˌheksəˈdesɪml/ | เลขฐานสิบหก |
| register width/ˈredʒɪstə wɪtθ/ | ความกว้างของรีจิสเตอร์ |
| kibi/ˈkɪbi/ | กิบิ |
เทราไบต์ที่ไม่ได้เป็นเทราไบต์
- ใน 2005 ผู้ใช้แคลิฟอร์เนียซื้อฮาร์ดไดรฟ์ที่มีฉลากว่า 80 GB คอมพิวเตอร์ของเขารายงานค่า 74.5 GB เขาฟ้องร้อง และผู้ผลิตในที่สุดก็จ่ายชดเชย: พวกเขาคิดหนึ่งกิกะไบต์เท่ากับพันล้านไบต์ แต่ระบบปฏิบัติการนับมันเท่ากับ $2^{30}$
- ทั้งสองฝ่ายไม่ได้โกหก มีตัวนำหน้าสองกลุ่ม: กลุ่มหนึ่งสร้างจากกำลังของสิบ และอีกกลุ่มสร้างจากกำลังของสอง ยิ่งตัวเลขมีค่ามากเท่าไร ความแตกต่างระหว่างสองกลุ่มนี้ยิ่งกว้างขึ้นเท่านั้น
- การแทนข้อมูลทั้งหมดขึ้นอยู่กับแนวคิดนี้: คอมพิวเตอร์เก็บเพียงเลข 0 และ 1 เท่านั้น ส่วนสิ่งอื่นๆ ล้วนเป็นการตกลงกันเกี่ยวกับวิธีการอ่านเลขเหล่านั้น
- บทเรียนนี้จะพูดถึงสามระบบเลข การแปลงระหว่างระบบเหล่านี้ และตัวนำหน้าทั้งสองกลุ่ม
ระบบเลขสามแบบ
- เดนารี่ (ฐาน 10) ใช้ตัวเลข 0 ถึง 9 โดยมีตำแหน่งที่มีค่าเป็นกำลังของสิบ เป็นระบบที่ใช้ในชีวิตประจำวัน
- ไบนารี (ฐาน 2) ใช้ 0 และ 1 โดยมีตำแหน่งที่มีค่าเป็นกำลังของสอง ตัวเลขหนึ่งหลักเรียกว่า bit; 4 bit รวมกันเป็น nibble; 8 bit รวมกันเป็น byte
- เฮกซาเดซิมอล (ฐาน 16) ใช้ 0 ถึง 9 ตามด้วย A ถึง F แทนค่า 10 ถึง 15 ตัวเลขเฮกซาเดซิมอลหนึ่งหลักเทียบเท่ากับ 4 bits พอดี นี่คือเหตุผลที่นักเขียนโปรแกรมใช้มันเพื่อเขียนย่อของไบนารี
| เดนารี่ | ไบนารี | เฮก |
|---|---|---|
| 10 | 1010 |
A |
| 15 | 1111 |
F |
| 16 | 0001 0000 |
10 |
| 255 | 1111 1111 |
FF |

ทุก系统是ตำแหน่ง; เฉพาะฐานที่แตกต่างกัน
ระบบเลข
byte = ผลรวมของค่าตำแหน่ง
แต่ละบิตมีค่าเท่ากับกำลังของสอง — เปลี่ยนสถานะบิตแล้วดูว่าตัวเลขสิบและเฮกซิมัลอัปเดตอย่างไร
ตัวเลขเฮกซิมัลหนึ่งหลักแทนบิตกี่ตัว?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
หลักเลขฐานหกสิบหนึ่งหนึ่งหลัก (0–F) ครอบคลุมค่าได้ 16 ค่า = $2^4$ ดังนั้นจึงจับคู่กับบิตได้พอดี 4 บิต (หนึ่งนิบเบิล)
ในหนึ่งไบต์มีบิตทั้งหมดกี่บิต?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
ไบต์มี 8 บิต (และนิบเบิลมี 4 บิต)
การแปลงจากเดนารี่เป็นไบนารี
- วิธีที่ 1, ตำแหน่ง: เขียนกำลังของสอง, $128, 64, 32, 16, 8, 4, 2, 1$, แล้วลบจำนวนที่มากที่สุดที่เข้ากันได้ ทิ้งไว้แล้วทำซ้ำกับส่วนที่เหลือ วางเลข 1 ไว้ใต้จำนวนที่คุณเลือกใช้
- วิธีที่ 2, การหารซ้ำ: หารด้วย 2 ซ้ำแล้วซ้ำอีก เขียนเศษออกแต่ละครั้ง แล้วอ่านเศษจาก ล่างขึ้นบน
- $42 = 32 + 8 + 2$, ดังนั้น bit ใต้ 32, 8 และ 2 คือ 1 และที่เหลือคือ 0:
0010 1010.

ลบกำลังของสองที่มากที่สุดที่เข้ากันได้ และทำซ้ำ
แปลงเลขฐานสิบ $13$ เป็นเลขฐานสอง (ไม่จำเป็นต้องเป็น 8 บิต — ให้แสดงเฉพาะบิตที่มีนัยสำคัญ)
Difficulty 1/5 · 100 coins + a small bonus on first completion today
$13 = 8 + 4 + 1$ ดังนั้นคอลัมน์ 8, 4 และ 1 จึงถูกตั้งค่า: 1101
แปลงเลขฐานสอง 00101010 เป็นเลขฐานสิบ
Difficulty 2/5 · 140 coins + a small bonus on first completion today
$32 + 8 + 2 = 42$ (คอลัมน์ 32, 8 และ 2 ถูกตั้งค่า)
ตัวอย่างวิธีทำ: เดนารี่ 200 ไปเป็นไบนารีและเฮกซาเดซิมอล
- $200 = 128 + 64 + 8$, ดังนั้น 8-bitbinary คือ
1100 1000. - แบ่งเป็น nibbles จากทางขวา:
1100คือ 12, ซึ่งเท่ากับ C;1000คือ 8. ดังนั้นเลขเฮกซาเดซิมอลคือC8. - ตรวจสอบโดยตำแหน่งในทิศทางตรงกันข้าม:
C8$= 12 \times 16 + 8 = 200$. ✓ แสดงวิธีทำเสมอ; การแปลงนั้นเองคือสิ่งที่ให้คะแนน
ไบนารีและเฮกซาเดซิมอล, ทั้งสองทิศทาง
- Binary to hex: จัดกลุ่มบิตเป็น nibbles จากขวาไปซ้าย เติมศูนย์ที่กลุ่มซ้ายสุดให้ครบ แล้วแปลงแต่ละ nibble
0010 0010 1110กลายเป็น2 2 Eดังนั้น22E - เฮกไปไบนารี: แทนที่แต่ละตัวเลขเฮกซาเดซิมอลด้วยรูปแบบ 4-bit ของมัน ไม่ต้องใช้การคำนวณทางคณิตศาสตร์
- เฮกไปเดนารี่: คูณแต่ละตัวเลขด้วยตำแหน่ง它有, $16^2 = 256$, $16^1 = 16$, $16^0 = 1$.
22E$= 2 \times 256 + 2 \times 16 + 14 = 558$.
แปลงเลขฐานหกสิบหนึ่ง 2E เป็นเลขฐานสิบ
Difficulty 2/5 · 140 coins + a small bonus on first completion today
$2 \times 16 + 14 = 32 + 14 = 46$ (E มีค่าเท่ากับ 14)
แปลงเลขฐานสอง 0010 0010 1110 เป็นเลขฐานหกteen
Difficulty 1/5 · 100 coins + a small bonus on first completion today
แต่ละนิบเบิลจะแปลงแยกกัน เริ่มจากด้านขวา: 0010 = 2, 0010 = 2, 1110 = 14 = E
ค่าหนึ่งต้องใช้ bit กี่ตัว?
- ข้อสอบกำหนด register width (8, 12 หรือ 16 บิต) และคุณต้องเติมศูนย์นำหน้าให้เป็นตามความกว้างนั้น $558$ ใน 12 บิต คือ
0010 0010 1110ไม่ใช่10 0010 1110 - จำนวนเต็ม unsigned จาก 0 ถึง $2^n - 1$ ต้องใช้ $n$ bit: 200 ต้องใช้ 8 bit (8 bit ไปถึง 255), 1000 ต้องใช้ 10 bit (10 bit ไปถึง 1023), 16 ต้องใช้ 5 bit (4 bit止 at 15).
- ตัวเลขเฮกซาเดซิมอลหนึ่งตัวต้องใช้ 4 bit, ตัวเลข BCD หนึ่งตัวต้องใช้ 4 bit, และตัวอักษร ASCII หนึ่งตัวต้องใช้ 7 bit, หรือ 8 bit สำหรับ Extended ASCII
เขียนเลขฐานสิบ 558 เป็นเลขฐานสองขนาด 12 บิต (แบ่งเป็นกลุ่มละสี่บิต ใช้ช่องว่างได้)
Difficulty 1/5 · 100 coins + a small bonus on first completion today
558 = 512 + 32 + 8 + 4 + 2 เติมศูนย์นำหน้าให้เป็น 12 บิตตามที่โจทย์กำหนด; หากไม่เติมศูนย์คำตอบจะเสียคะแนน
ตัวอย่างวิธีทำ: จำนวน bit น้อยที่สุด
- ระบบหนึ่งต้องเก็บค่าตั้งแต่ 0 ถึง 1000. ต้องใช้ bit น้อยที่สุดกี่ตัว?
- ถามว่ากำลังของสองตัวไหนเกิน 1000 ก่อน. $2^9 = 512$, น้อยเกินไป; $2^{10} = 1024$, ดังนั้น 10 bit เก็บได้ตั้งแต่ 0 ถึง 1023 และ 1000 เข้าได้
- คำตอบคือ 10 bit, และเหตุผลคือช่วงค่า, ไม่ใช่จำนวนตัวเลข. กับดักทั่วไป: 16 ต้องใช้ ห้า bit, เพราะ 4 bit stops at 15.
จำนวนบิตขั้นต่ำที่จำเป็นในการจัดเก็บค่าที่ไม่ติดลบตั้งแต่ 0 ถึง 1000 คือเท่าใด?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
เก้าบิตให้ค่าถึง 511 สิบบิตให้ค่าถึง 1023 โจทย์ถามเกี่ยวกับช่วงของค่าที่บิตรองรับ ไม่ใช่จำนวนหลัก
ตัวนำหน้าไบนารีและตัวนำหน้าทศนิยม
- ตัวนำหน้าทศนิยม (Decimal) เป็นกำลังของสิบ และใช้สำหรับความจุไดรฟ์และความเร็วเครือข่าย: กิโล $= 10^3$, เมกะ $= 10^6$, กิกะ $= 10^9$, เทรา $= 10^{12}$.
- Binary prefixes เป็นกำลังสอง ใช้สำหรับขนาดหน่วยความจำ: kibi (Ki) $= 2^{10} = 1024$, mebi (Mi) $= 2^{20}$, gibi (Gi) $= 2^{30}$, tebi (Ti) $= 2^{40}$
- ดังนั้นไดรฟ์ "1 TB" จึงมี $10^{12}$字节, แต่เมื่อระบบปฏิบัติการรายงานเป็น TiB มันจะหารด้วย $2^{40}$ และแสดงประมาณ 0.91. ไม่มีอะไรหายไป; ใช้หน่วยวัดที่แตกต่างกันสองชนิดเท่านั้น
1 กิโลไบต์ (KiB) มีไบต์ทั้งหมดกี่ไบต์?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
กิโลไบต์มี $2^{10} = 1024$ ไบต์ (เป็นพรีฟิกซ์แบบไบนารี ใช้สำหรับหน่วยความจำ)
ไดรฟ์ที่ขายในสเปค 1 TB มีจำนวนไบต์น้อยกว่า 1 TiB ของหน่วยความจำ
Difficulty 1/5 · 100 coins + a small bonus on first completion today
1 TB เท่ากับ 10^12 ไบต์; 1 TiB เท่ากับ 2^40 หรือประมาณ 1.1 x 10^12 พรีфикซ์ฐานสิบใช้กับไดรฟ์ พรีфикซ์ไบนารีใช้กับหน่วยความจำ
ที่ที่เฮกซาเดซิมอลถูกใช้งานจริง
- Memory addresses และ machine code เพราะหนึ่งหลักฐานสิบหกตรงกับหนึ่ง nibble และหนึ่งไบต์เท่ากับสองหลักฐานสิบหกพอดี ทำให้การ dump อ่านได้ง่ายในพริบตา
- Color codes ในเว็บเพจ:
#FF8800เป็นหนึ่งไบต์ของแต่ละสีแดง เขียว และน้ำเงิน MAC addresses และ error codes ก็ similarly - สาเหตุเหมือนกันเสมอ: เฮกซาเดซิมอลคือ การเขียนย่อของไบนารี ที่มนุษย์สามารถอ่านและเขียนโดยไม่ผิดพลาด ไม่ใช่ระบบที่คอมพิวเตอร์ใช้โดยตรง
เลขฐานหกสิบหนึ่งถูกนำไปใช้จริงในส่วนไหน? เลือก ทุก ข้อที่ถูกต้อง
Difficulty 2/5 · 140 coins + a small bonus on first completion today
เลขฐานหกสิบหนึ่งเป็นคำย่อที่มนุษย์อ่านเข้าใจได้ง่ายกว่าเลขฐานสอง: ตัวเลขหนึ่งตัวต่อนิบเบิล สองตัวต่อไบต์ ตัวโปรเซสเซอร์เองทำงานด้วยเลขฐานสอง
คะแนนที่หลุดหายไป
- Pad ให้มีความกว้างที่โจทย์กำหนด คำตอบที่ไม่ได้เติมศูนย์จะเสียคะแนนแม้ว่าบิตจะถูกต้องก็ตาม
- จัดกลุ่ม nibbles จากทางขวา, ไม่ใช่ทางซ้าย มิฉะนั้นตัวเลขเฮกซาเดซิมอลทุกตัวจะเลื่อนตำแหน่ง
- 4 bit ไปถึง 15, 8 bit ไปถึง 255, 10 bit ไปถึง 1023. "ต้องใช้ bit กี่ตัว" เป็นคำถามเกี่ยวกับ ช่วงค่า
- Kibibyte คือ 1024字节 และ kilobyte คือ 1000字节. ควรระบุว่าคุณใช้ชนิดใดในการคำนวณขนาดใดๆ
คุณเข้าใจแล้ว
- denary ฐาน 10, binary ฐาน 2 (bit, nibble = 4 bit, byte = 8 bit), hexadecimal ฐาน 16 โดยที่ 1 ตัวเลขเท่ากับ 1 nibble พอดี
- การแปลงเลขฐานสิบเป็นเลขฐานสองโดยการลบด้วยกำลังของสอง หรือด้วยการหารซ้ำๆ โดยอ่านเศษจากล่างขึ้นบน; การแปลงเลขฐานสองเป็นเลขฐานหกteenโดยการจัดกลุ่ม nibbles จากขวาไปซ้าย; การแปลงเลขฐานหกteenเป็นเลขฐานสิบโดยใช้ตำแหน่งที่มีค่าน้ำหนัก
- เติมเต็มให้กว้างเท่าที่รีจิสเตอร์รองรับ; ค่าที่ไม่มีเครื่องหมายต้องใช้ $n$ บิต โดย $2^n$ เป็นค่าแรกที่จะเกินกว่าค่าดังกล่าว
- พหุคูณ (prefixes) ของเลขฐานสิบคือกำลังของสิบ (สำหรับไดรฟ์, เครือข่าย), ส่วนพหุคูณของเลขฐานสองคือกำลังของสอง (สำหรับหน่วยความจำ): kibi $= 1024$