วันอาทิตย์ที่ 28 กันยายน พ.ศ. 2557

ระบบเลขฐาน

1. ระบบเลขฐานต่าง ๆ
    คอมพิวเตอร์ทำงานด้วยกระแสไฟฟ้า ดังนั้นจึงมีการแทนที่สภาวะของกระแสไฟฟ้าได้ 2 สภาวะ คือ สภาวะที่มีกระแสไฟฟ้า และสภาวะที่ไม่มีกระแสไฟฟ้า และเพื่อให้โปรแกรมเมอร์สามารถสั่งการคอมพิวเตอร์ได้ จึงได้มีการสร้างระบบตัวเลขที่นำมาแทนสภาวะของกระแสไฟฟ้า
โดยตัวเลข 0 จะแทนสภาวะไม่มีกระแสไฟฟ้า หรือ ปิด (off)
เลข 1 แทนสภาวะมีกระแสไฟฟ้า หรือเปิด (on)
    จึงได้กำหนดตัวเลขที่มีจำนวน 2 จำนวน (2 ค่า) เรียกว่าระบบเลขฐานสอง (Binary Number System) ซึ่งเป็นระบบตัวเลขที่สามารถนำมาใช้ในการสั่งงานคอมพิวเตอร์ โดยการแทนที่สภาวะต่างๆ ของกระแสไฟฟ้า แต่ในชีวิตประจำวันของคนเราจะคุ้นเคยกับตัวเลขที่มีจำนวน 10 จำนวน คือ เลข 0 - 9 ซึ่งเรียกว่าระบบเลขฐานสิบ (Decimal Number System) ดังนั้นจึงมีความจำเป็นต้องศึกษาระบบเลขฐาน ประกอบการศึกษาวิชาด้านคอมพิวเตอร์ เพื่อความเข้าใจพื้นฐานการทำงานของเครื่องคอมพิวเตอร์
ระบบจำนวนที่ใช้ในทางคอมพิวเตอร์




ประกอบด้วย
ระบบเลขฐานสอง (Binary) ประกอบด้วยตัวเลข 0 และ 1
ระบบเลขฐานแปด (Octal) ประกอบด้วยตัวเลข 0 - 7
ระบบเลขฐานสิบ (Decimal) ประกอบด้วยตัวเลข 0 - 9
ระบบเลขฐานสิบหก (Hexadecimal) ประกอบด้วยตัว เลข 0 - 9 และ A - F
ระบบจำนวน
จำนวนหลัก (Digit)
เลขฐานสอง
0
1
เลขฐานแปด
0
1
2
3
4
5
6
7
เลขฐานสิบ
0
1
2
3
4
5
6
7
8
9
เลขฐานสิบหก
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
2. ระบบเลขฐานสิบ (Decimal Number System)
    ระบบเลขฐานสิบ เป็นระบบเลขที่ใช้กันในชีวิตประจำวัน ไม่ว่าจะนำไปใช้คำนวณประเภทใด โดยจะมีสัญลักษณ์ที่ใช้แทนตัวเลขต่างๆ ของเลขฐานสิบ (Symbol) จำนวน 10 ตัว ตัวเลขหรือที่เรียกว่า Digit ที่ใช้แทนระบบเลขฐานสิบ ได้แก่ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    ตัวเลขแต่ละตัวจะมีค่าประจำตัว โดยกำหนดให้ค่าที่น้อยที่สุด คือ 0 (ศูนย์) และเพิ่มค่าทีละหนึ่ง จนครบจำนวน 10 ตัว ดังนั้นค่ามากที่สุด คือ 9 การนำตัวเลขเหล่านี้ มารวมกลุ่มกัน ทำให้เกิดความหมายเป็น "ค่า" นั้น อาศัยวิธีการกำหนด "หลัก" ของตัวเลข (Position Notation) กล่าวคือ ค่าของตัวเลขจำนวนหนึ่ง พิจารณาได้จากสองสิ่งคือ
- ค่าประจำตัวของตัวเลขแต่ละตัว
- ค่าหลักในตำแหน่งที่ตัวเลขนั้นปรากฎอยู่
ในระบบที่ว่าด้วยตำแหน่งของตัวเลข ตำแหน่งที่อยู่ทางขวาสุด จะเป็นหลักที่มีค่าน้อยที่สุด เรียกว่า Least Sinificant Digit (LSD) และตัวเลขที่อยู่ในหลักซ้ายสุดจะมีค่ามากที่สุด เรียกว่า Most Sinificant Digit (MSD)
ตัวอย่าง
จำนวน 1,897
Most Sinificant Digit (MSD)
Least Sinificant Digit (LSD)
1
8
9
7
นิยาม ค่าหลักของตัวเลขใดๆ คือ ค่าของฐานยกกำลังด้วยค่าประจำตำแหน่งของแต่ละหลัก โดยกำหนดให้ค่าประจำตำแหน่งของหลักของ LSD มีค่าเป็น 0
ในระบบเลขฐานสิบ จะมีสัญลักษณ์อยู่ 10 อย่าง คือ 0 - 9 จำนวนขนาดของเลขฐานสิบ สามารถอธิบายได้ โดยใช้ตำแหน่งน้ำหนักของแต่ละหลัก (Postional Weight) โดยพิจารณาจากเลข ดังต่อไปนี้
ค่าตัวเลข 4,897 สามารถขยายได้ดังนี้
4,897
= 4000 + 800 + 90 + 7
= (4 x 103) + (8 x 102) + (9 x 101) + (7 x 100)
จะเห็นว่าน้ำหนักตามตำแหน่ง ของตัวเลขต่างๆ สามารถขยายตามระบบจำนวนได้ และถูกแทนที่ด้วยสมการ ดังต่อไปนี้
N = dnRn + ... + d3R3 + d2R2 + D1R1 + D0R0
เมื่อ
N    คือ ค่าของจำนวนฐานสิบที่ต้องการ
dn   คือ ตัวเลขที่อยู่ในตำแหน่งต่างๆ
R    คือ ฐานของจำนวนตัวเลขนั้นๆ
n    คือ ค่ายกกำลังของฐานตามตำแหน่งต่างๆ
เลขที่เป็นเศษส่วน หรือจำนวนผสมนั้น ก็สามารถจะเขียนในรูป Positional Notation ได้เช่นกัน โดยตัวเลขแต่ละหลักที่อยู่ในตำแหน่งหลังจุดทศนิยมนั้นกำลังของหลักจะมีค่าเป็นลบ โดนเริ่มจากลบ 1 เป็นต้นไป นับจากน้อยไปหามาก
ดังนั้นในระบบเลขฐานสิบ หลักแรกหลังจุดทศนิยมจะมีค่าเท่ากับ เลขจำนวนนั้นคูณด้วย 10-1 ตัวที่สองจะเป็น 10-2 ไปเรื่อยๆ เช่น
123.456 =1 x 102 + 2 x 101 + 3 x 100+4 x 10-1+5 x 10-2+6 x 10-3
กฎการแทนตัวเลขนั้น สามารถนำไปใช้กับระบบตัวเลขทั่วๆ ไปได้ โดยไม่คำนึงว่า เลขนั้นจะเป็นฐานอะไร
3. ระบบเลขฐานสอง
    ระบบเลขฐานสอง มีสัญลักษณ์ที่ใช้เพียงสองตัว คือ 0 และ 1 ถ้าเปรียบเทียบเลขฐานสอง กับเลขฐานสิบแล้ว ค่าของหลักที่ถัดจากหลักที่น้อยที่สุด (LSD) ขึ้นไป จะมีค่าเท่ากับ ฐานสองยกกำลังหมายเลขหลัก แทนที่จะเป็น 10 ยกกำลัง ดังนี้
เลขฐานสิบ
เลขฐานสอง
100
1
หน่วย
20
1
หนึ่ง
101
10
สิบ
21
2
สอง
102
100
ร้อย
22
4
สี่
103
1000
พัน
23
8
แปด
104
10000
หมื่น
24
16
สิบหก
105
100000
แสน
25
32
สามสิยสอง
ระบบเลขฐานสองเกิดจากการใช้ตัวเลขเพียง 2 ตัว คือ 0 และ 1 ดังนั้น สมการคือ
N = dnRn + ... + d3R3 + d2R2 + D1R1 + D0R0
เมื่อ d คือค่า 0 หรือ 1
เช่น 1101 = (1 x 23) + (1 x 22) + (0 x 21) + (1 x 20)
เพื่อตัดปัญหายุ่งยาก ในการแทนค่าของเลขระบบต่างๆ เรานิยมเขียน ตัวเลขอยู่ในวงเล็บ และเขียนค่าของฐานนั้น อยู่นอกวงเล็บ
เช่น (101101)2 = (45)10
สำหรับเศษส่วน จะเขียนค่าของเศษส่วนอยู่หลังจุด (Binary Point) ยกกำลังเป็นลบ เพิ่มขึ้นตามลำดับ ดังตัวอย่าง
(0.1011)2 = (1 x 2-1) + (0 x 2-2) + (1 x 2-3) + (1 x 2-4)
4. การแปลงเลขฐานสองเป็นเลขฐานสิบ
    การแปลงเลขฐานสองเป็นเลขฐานสิบ มีหลายวิธี แต่ที่จะแนะนำคือ การกระจายค่าประจำหลัก จากนั้นนำมาบวกรวมกันอีกครั้ง ผลลัพธ์ที่ได้จะเท่ากับค่าในเลขฐานสิบ
ตัวอย่างที่1  (110111)2 มีค่าเท่ากับเท่าไรในระบบเลขฐานสิบ
วิธีทำ
N = (1 x 25) + (1 x 24) + (0 x 23) + (1 x 22) + (1 x 21) + (1 x 20)
   = 32 + 16 + 0 +4 + 2 + 1
1101112 = 5510
การแปลงเลขฐานสอง เป็นเลขฐานสิบ วิธีที่สอง คือ Dibble Dobble Method โดยการนำเอาเลขหลักซ้ายสุด มาวางไว้ แล้วคูณด้วย 2 จากนั้นบวกด้วยเลขบิทที่อยู่ ทางขวามือ จากนั้นนำผลลัพธ์ มาคูณด้วย 2 บอกด้วยเลขบิทต่อไป ดังนี้
เช่น ต้องการแปลง (110111)2 เป็นเลขฐานสิบ
บิทซ้ายสุด คือ 1
คูณด้วย 2 และบวกบิทถัดไป (2 x 1) + 1 = 3
คูณด้วย 2 และบวกบิทถัดไป (2 x 3) + 0 = 6
คูณด้วย 2 และบวกบิทถัดไป (2 x 6) + 1 = 13
คูณด้วย 2 และบวกบิทถัดไป (2 x 13) + 1 = 27
คูณด้วย 2 และบวกบิทถัดไป (2 x 27) + 1 = 55
ดังนั้น 1101112 = 5510
5. การแปลงเลขฐานสิบเป็นฐานสอง
    การแปลงเลขฐานสิบเป็นเลขฐานสองก็มีหลายวิธี แต่ที่จะแนะนำคือ การหารด้วย 2 แล้วจดค่าเศษจากการหารไว้ จนกระทั่งหารไม่ได้อีกแล้ว หรือการหารสั้น จากนั้นนำเศษจากการหารแต่ละครั้ง มาไล่ลำดับจากล่างขึ้นไปหาค่าบนสุด ผลลัพธ์ที่ได้จะเท่ากับค่าในเลขฐานสอง
ตัวอย่างที่ 2 (29)10  มีค่าเท่ากับเท่าไรในระบบเลขฐานสอง
decimal
การแปลงเลขหลังทศนิยม (เศษส่วน) ฐานสิบ (Fractional Decimal Numbers) ให้เป็นฐานสอง
การเปลี่ยนเลขหลังทศนิยมฐานสิบ ให้เป็นฐานสอง จะใช้วิธีการนำค่าเลขหลังทศนิยมตั้ง แล้วคูณด้วยสอง จากนั้นนำผลลัพธ์ที่ได้เป็นตัวตั้งในการคูณครั้งต่อไป จนกว่าค่าผลลัพธ์ส่วนที่เป็น เลขหลังทศนิยมเท่ากับ .00 กรณีที่คูณแล้วไม่ลงตัวเท่ากับ .00 ก็ให้คูณจนได้ค่าที่ต้องการ สุดท้ายนำค่าตัวเลขก่อนทศนิยม จากผลลัพธ์แต่ละครั้ง มาเขียนเรียงต่อกัน ก็จะได้ค่าฐานสองที่ต้องการ ดังตัวอย่าง

ตัวอย่าง ต้องการแปลงเลข (0.65625)10 เป็นเลขฐานสอง
พิจารณาทีละจุด
นำ 0.65625 คูณด้วย 2 ได้ค่าเท่ากับ 1.31250
  • ค่า 1 (เลขก่อนทศนิยม) จะเป็นค่าหลักแรกของค่าเลขฐานสอง
  • นำ .31250 (เลขหลังทศนิยม) ไปเป็นตัวตั้งในการคูณครั้งถัดไป
นำ 0.31250 คูณด้วย 2 ได้ค่าเท่ากับ 0.62500
  • ค่า 0 (เลขก่อนทศนิยม) จะเป็นค่าหลักที่สองของค่าเลขฐานสอง
  • นำ .62500 (เลขหลังทศนิยม) ไปเป็นตัวตั้งในการคูณครั้งถัดไป
นำ 0.62500 คูณด้วย 2 ได้ค่าเท่ากับ 1.25000
  • ค่า 1 (เลขก่อนทศนิยม) จะเป็นค่าหลักที่สามของค่าเลขฐานสอง
  • นำ .25000 (เลขหลังทศนิยม) ไปเป็นตัวตั้งในการคูณครั้งถัดไป
นำ 0.25000 คูณด้วย 2 ได้ค่าเท่ากับ 0.50000
  • ค่า 0 (เลขก่อนทศนิยม) จะเป็นค่าหลักที่สี่ของค่าเลขฐานสอง
  • นำ .50000 (เลขหลังทศนิยม) ไปเป็นตัวตั้งในการคูณครั้งถัดไป
นำ 0.5000 คูณด้วย 2 ได้ค่าเท่ากับ 1.00000
  • ค่า 1 (เลขก่อนทศนิยม) จะเป็นค่าหลักที่ห้าของค่าเลขฐานสอง
  • เนื่องจากเลขหลังทศนิยมเท่ากับ .00000 จึงไม่ต้องคูณต่อ
นำเลขก่อนทศนิยมของการคูณแต่ละครั้ง มาเขียนเรียงกัน จะได้ค่าเท่ากับ 10101
ดังนั้นเลขทศนิยมฐานสิบ 0.65625 จะเท่ากับ 0.10101 ในฐานสอง

ไม่มีความคิดเห็น:

แสดงความคิดเห็น