Tuesday, May 28, 2013

ระบบเลขฐานแปด

ระบบเลขฐานแปด เป็นระบบตัวเลขที่มีค่าฐานเป็นแปด มีตัวเลขอยู่ 8 ตัว คือ0, 1, 2, 3, 4, 5, 6, 7
ซึ่งสามารถเปรียบเทียบค่าเลขฐานได้ตามตาราง 
เลขฐานสิบ
เลขฐานสอง
เลขฐานแปด
0
000
0
1
001
1
2
010
2
3
011
3
4
100
4
5
101
5
6
110
6
7
111
7

 การแปลงเลขฐาน 10 ให้เป็นเลขฐาน 8 ทำได้โดยเอาเลขฐานสิบตั้ง แล้วหารด้วยเลข 8 ไปเรื่อย ๆ จนกระทั่งผลลัพธ์เป็น "0" ในการหารนั้นจะต้องเขียนเศษไว้ทุกครั้ง จากนั้นให้เขียนเศษที่ได้จากการหารโดยเรียงลำดับจากด้านล่างขึ้นด้านบน
 
ตัวอย่าง      มีค่าเท่าไรในเลขฐานแปด
ผลลัพธ์ของการแปลง ให้อยู่ในรูปเลขฐานแปด คือ  

 การแปลงเลขฐาน 8 ให้เป็นเลขฐาน 10 ทำได้โดยวิธีการคูณตัวเลขฐาน 8 ในแต่ละหลักด้วยค่าประจำตำแหน่ง แล้วนำผลลัพธ์ที่ได้มารวมกัน จะได้เป็นค่าของเลขฐานสิบ
 
ตัวอย่าง        มีค่าเท่าไร ในเลขฐานสิบ
=

=

=
64 + 16 + 6

=
ผลลัพธ์ของการแปลง  มีค่าเท่ากับ    

หลักการแปลงเลขฐานสองเป็นเลขฐานแปด
 
จัดเลขฐานสองทีละ 3 ตัว โดยเริ่มจากหลังไปหน้า
 
นำเลขที่จัดได้ แปลงเป็นเลขฐานสิบ
 
เขียนเลขฐานแปดแทนที่เลขฐานสอง เป็นคำตอบที่ได้

ตัวอย่าง      มีค่าเท่าไรในเลขฐานแปด
1
001
101
1
1
5
  มีค่าเท่ากับ  
หลักการแปลงเลขฐานแปดเป็นเลขฐานสอง
 
แปลงเลขฐานแปดให้เป็นเลขฐานสอง  เต็มสามหลัก วางเรียงตามลำดับ
 
จากข้อ 1 เลขฐานสองที่ไม่ครบสามหลัก  ให้ใส่เลข  0  ด้านหน้า  ให้ครบสามหลัก
 
ค่าที่ได้คือคำตอบเลขฐานสอง

ตัวอย่าง      มีค่าเท่าไรในเลขฐานสอง
2
5
4
3
10
101
100
11
10
101
100
011
  มีค่าเท่ากับ  




ระบบเลขฐานสอง


ระบบเลขฐานสอง  คือ  ระบบตัวเลขที่มีค่าฐานเป็นสอง มีสัญญลักษณ์ 2 ตัว คือ 0 กับ 1  ค่าตามตำแหน่งของส่วนที่เป็นจำนวนเต็มของเลขฐานสอง คือ

 
 ตารางเปรียบเทียบเลขฐานสอง
เลขฐานสิบ
เเลขฐานสอง
0
00
1
01
2
10
3
11
4
100
5
101
6
110
7
111
8
1000
9
1001



       การแปลงเลขฐาน 10 ให้เป็นเลขฐาน 2 ทำได้โดยเอาเลขฐานสิบตั้ง แล้วหารด้วยเลข 2 ไปเรื่อย ๆ จนกระทั่งผลลัพธ์เป็น "0" ในการหารนั้นจะต้องเขียนเศษไว้ทุกครั้ง จากนั้นให้เขียนเศษที่ได้จากการหารโดยเรียงลำดับจากด้านล่างขึ้นด้านบน
 
ตัวอย่าง   จงแปลง   ให้อยู่ในรูปเลขฐานสอง
ผลลัพธ์ของการแปลง      ให้อยู่ในรูปเลขฐาน 2  คือ    


การแปลงเลขฐาน 2 ให้เป็นเลขฐาน 10 ทำได้โดยวิธีการคูณตัวเลขฐาน 2 ในแต่ละหลักด้วยค่าประจำตำแหน่ง
แล้วนำผลลัพธ์ที่ได้มารวมกัน จะได้เป็นค่าของเลขฐานสิบ
 
ตัวอย่าง   จงแปลง   ให้อยู่ในรูปเลขฐานสิบ
=

=

=
64+16+6

=
ผลลัพธ์ของการแปลง ให้อยู่ในรูปเลขฐานสิบ  คือ    



สวัสดีค่ะ ยินดีต้อนรับเข้าสู่บทเรียนมัลติมีเดียเรื่อง ระบบเลขฐานคอมพิวเตอร์  จัดทำขึ้นเพื่อเป็นเอกสารประกอบการเรียนในรายวิชา เทคโนโลยีสารสนเทศ ในระดับช่วงชั้นที่ 4  และผู้ที่สนใจ  เนื้อหาจะกล่าวถึงการแปลงเลขฐานต่าง ๆ ได้แก่ เลขฐานสอง เลขฐานแปด เลขฐานสิบ และเลขฐานสิบหก นอกจากนี้นักเรียนยังสามารถฝึกทักษะจากแบบหลังจากศึกษาบทเรียนเพื่อเป็นการ ทบทวน
             เนื้อหาความรู้นี้จะไม่สมบูรณ์   หากไม่ได้รับข้อมูลจากสื่อต่าง ๆ ไม่ว่าจะเป็นเอกสาร  หนังสือแบบเรียน คู่มือการเรียนรู้ต่าง ๆ  และแหล่งข้อมูลทางอินเตอร์เ็น็ต รวมทั้งภาพที่นำมาใช้ประกอบในบทเรียน ผู้จัดทำขอขอบพระคุณ และเนื้อหาดังกล่าวมีไว้เพื่อเผยแพร่ทางการศึกษา โดยมิได้หวังผลทางการค้าใด ๆ ทั้งสิ้น
ตัวเลขที่คนเราใช้ในชีวิตประจำวันคือเลขฐาน 10 ประกอบด้วยตัวเลขจำนวน 10 ตัว คือ เลข 0 ถึงเลข 9 เหตุผลที่คนเราใช้เลขฐาน 10 อาจเป็นเพราะว่่ามนุษย์เรามีนิ้วมืออยู่ 10 นิ้ว จึงนำมาใช้เป็นเครื่องมือช่วยในนับเลขหรือการคำนวณ  แต่สำหรับการประมวลผลในคอมพิวเตอร์จะใช้ระบบเลขฐานสอง ที่ประกอบด้วยตัวเลข 2 ตัว คือ เลข 0 และเลข 1  เพราะภายในเครื่องคอมพิวเตอร์ประกอบด้วยวงจรอิเลคทรอนิกส์ ที่มีหลักการทำงานแบบดิจิตอล และใช้ระดับแรงดนไฟฟ้า 2 ระดับ คือ สวิตซ์เปิด (on) กับสวิตซ์ปิด (off) โดยกำหนดให้สถานะของการ "เปิด" แทนด้วยเลข "0" และ"ปิด" แทนด้วยเลข "1" ซึ่งเลขฐานสองจำนวนหนึ่งหลัก เราเรียกว่า "บิต"
          นอกจากนี้คอมพิวเตอร์ยังมีการใช้งานตัวเลขฐานอื่น ๆ อีก คือ เลขฐานแปด ที่ประกอบด้วยตัวเลข 8 ตัว คือ 0 ถึง 7 และเลขฐานสิบหก ที่ประกอบด้วยตัวเลข 0 ถึง 9 และตัวอักษรอีก 6 ตัวคือ A, B, C, D, E และ F ซึ่งมีค่าเท่ากับเลข 10 ถึง 15 โดยสามารถเปรียบเทียบการใช้เลขฐานสิบกับเลขฐานต่าง ๆ ได้ตามตารางดังนี้
 
เลขฐานสิบ
เลขฐานสอง
เลขฐานแปด
เลขฐานสิบหก
0
0000
0
0
1
0001
1
1
2
0010
2
2
3
0011
3
3
4
0100
4
4
5
0101
5
5
6
0110
6
6
7
0111
7
7
8
1000
10
8
9
1001
11
9
10
1010
12
A
11
1011
13
B
12
1100
14
C
13
1101
15
D
14
1110
16
E
15
1111
17
F



Sunday, May 26, 2013


เรื่องของ "ชนิดข้อมูล - Data Type" ล้วนมีความสำคัญเป็นอย่างมากในการออกแบบ หรือ พัฒนาโปรแกรมขึ้นมา อย่าง เวลาที่เราจะสร้างฐานข้อมูลขึ้นมาสักตารางก็ต้องไปเกี่ยวข้องกับชนิดข้อมูล แล้ว พอไปเขียนโปรแกรมก็ต้องมีการประกาศตัวแปรชนิดต่างๆอีกนั่นไงล่ะครับ ... พี่น้อง ชนิดของข้อมูลเหล่านี้อาจมีชื่อเรียกที่แตกต่างกันไปในแต่ละตัวแปลภาษา แต่ทั้งนี้ทั้งนั้นมันก็ล้วนแล้วแต่ก่อกำเนิดมาจากรากเหง้า หรือ วิธีการคิดเช่นเดียวกัน ในปัจจุบันนี้ ผมคิด และ ยังเชื่อว่า มีพี่น้องอีกหลายต่อหลายคนที่ยังไม่เคยรู้เรื่องนี้มาก่อน ... แต่ผมไม่ขอสรุปให้ฟังหรอกน่ะว่า "เราจะเข้าใจมันไปทำไม ???" เอาเป็นว่า ... ขอให้พี่น้องนำไปคิดเอาเองล่ะกันครับผม ... ว่าจะนำสิ่งที่รู้ตรงนี้ไปใช้ประโยชน์จากมันอย่างไรได้บ้าง เหอๆๆๆๆ

การหาค่าต่ำสุด และ สูงสุดของเลขจำนวนเต็มขนาด 1 และ 2 ไบต์ แบบไม่คิดเครื่องหมาย
พี่น้อง ... สังเกตเห็นค่าหน่วยความจำ RAM มั้ยครับว่าทำไมมันถึงได้เพิ่มเป็นเท่าตัวตลอด ... เหอๆๆๆๆ
ก็เพราะมันมาจากเลข 2 ยกกำลังเลขจำนวนเต็มใดๆ ที่เรียงต่อๆกันดังภาพด้านบนนี่แหละครับ ... พี่น้อง

เลขจำนวนเต็มขนาด 2 Byte (16 บิต) หรือ Integer (แบบคิดเครื่องหมาย) จะมีค่าระหว่าง -32,768 ถึง +32,767
มันหามาได้ก็เพราะด้วยวิธีการเฉกเช่นนี้ล่ะครับ ... พี่น้อง

ค่าต่ำสุด และ สูงสุด ของเลขจำนวนเต็มขนาด 1 ไบต์ แบบคิดเครื่องหมาย


ตัวอย่างการหาไบนารี่เลข -128
เวลาบวกเลขฐาน 2 ก็อย่างงน่ะครับ ... 1 + 1 = 0 ทด 1 เด้อพี่น้อง


ตัวอย่างการหาไบนารี่เลข -28


ตัวอย่างการหาไบนารี่เลข -129
บทพิสูจน์จากโปรแกรม

โปรแกรมภาษาปาสคาล ทดสอบชนิดของข้อมูล
โปรแกรมภาษาปาสคาล ทดสอบชนิดของข้อมูล

คำตอบที่ได้รับ

จาก No-3 เราพบว่าเมื่อตัวแปร Bytes (ชนิด BYTE แบบไม่คิดเครื่องหมาย) มีค่าเท่ากับ 255 + 1 หรือ 256 แต่ผลที่ได้กลับวนรอบกลับมาที่จุดเริ่มต้นใหม่ ... นั่นคือ 0


นี่คือบทพิสูจน์ ... ผลลัพธ์ที่ได้มันควรจะได้เป็น 256 (ฐาน 10) หรือ 1 0 0 0 0 0 0 0 0 (ฐาน 2) แต่พี่น้องพึงสังเกตว่าเลขจำนวนเต็มขนาด 1 ไบต์ มันสามารถเก็บค่าได้เพียง 8 บิต (บิต 7 - บิต 0 = 8 บิต) ดัง นั้นมันจึงเก็บได้เพียงเลข 0 ทั้งหมด 8 ตัว ส่วนตัวทด คือ 1 มันคือบิต 8 (หรือตัวที่ 9) ไม่รู้ว่าเราจะเอามันไปยัดใส่ไว้ตรงไหนน่ะซิ ผลลัพธ์ที่ได้มันก็เลยให้คำตอบมาเป็น 0 อย่างที่เห็นและเป็นอยู่ ... แต่หากพี่น้องต้องการจะคิดตัวทดด้วย ก็จะต้องเปลี่ยนตัวแปรชนิด BYTE ให้กลายเป็นเลขจำนวนเต็มแบบ Integer ขนาด 2 ไบต์แทนไงล่ะคร้าบ ...

โปรแกรมภาษา C++
หรือใช้โปรแกรมภาษา C++

คำตอบของภาษา C++
ผลลัพธ์ที่ได้เหมือนกันล่ะครับ ... พี่น้อง


เมื่อลองนำมาทดสอบกับ MS Visual Basic 6.0
เกิด Run Time Error แบบกระจุ๊กกระจิ๊ก ...
ซึ่ง นอกจากจะเรื่องของชนิดข้อมูลแล้ว มันยังมีอีกหลายๆอย่างที่พี่น้องต้องเจอะกับ Bug อันเนื่องมาจากสาเหตุเล็กๆน้อยๆที่มักจะมองข้ามไป


การแก้ไข Bug ... แต่การพัฒนาโปรแกรมจริงๆกว่าจะหา Bug เจอ มันไม่ได้ง่ายดายเช่นนี้น่ะครับ ... พี่น้อง