/ BasicKnowledge

คอมพิวเตอร์ทำงานอย่างไร?

ก่อนที่เราจะมาเริ่มเขียนโปรแกรมกัน เราควรจะรู้เกี่ยวกับวิธีการทำงานของคอมพิวเตอร์ในปัจจุบันสักเล็กน้อย คอมพิวเตอร์ทำงานอย่างไร?


คอมพิวเตอร์ในปัจจุบันยังคงใช้วงจรอิเล็กทรอนิสก์ที่เรียกว่า microprocessors เป็นหน่วยประมวลผล ในแต่ละส่วนประกอบของเครื่องคอมพิวเตอร์นั้นประกอบด้วยวงจรเล็กๆ มากมายมหาศาล เมื่อมันเป็นวงจรไฟฟ้าทั่วๆ ไปแล้ว แสดงว่าสิ่งที่ทำได้ก็แค่เปิดหรือปิด การทำงานของคอมพิวเตอร์ก็อาศัยหลักกานนี้

ใช้เลข 1 แทนสถานะติด และเลข 0 แทนสถานะดับ

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

Control Unit

Control Unit ทำหน้าที่จัดการอุปกรณ์ต่างๆของเครื่องคอมพิวเตอร์ โดยการอ่านและประวลผลคำสั่งโปรแกรม ด้วยวิธีการแปลงคำสั่งเหล่านั้นไปเป็นสัญญาณคำสั่งที่สามารถควบคุมส่วนประกอบอื่นๆ ของคอมพิวเตอร์ ปัจจุบันวงจรนี้ถูกรวมอยู่ใน CPU
Arithmetic Logic Unit

ALU เป็นวงจรที่มีหน้าที่ประมวลผลทางคณิตศาสตร์และตรรกศาสตร์ การดำเนินการทางคณิตศาสต์มักจะถูกจำกัดไว้แค่ การบวก การลบ หรืออาจจะมีการคูร การหาร ตรีโกณมิติ และรากที่สอง หรือบางครั้งก็สามารถคำนวณได้แค่จำนวนเต็ม อย่าไรก็ตามความสามารถอื่นๆที่ขาดหายไปจะถูกทดแทนด้วยการแปลงปัญหาที่แก้ไม่ได้ให้เป็นขั้นตอนย่อยๆ ทางคณิตศาสตร์หรือตรรกศาสตร์ ที่สามารถคำนวณได้ ปัจจุบันวงจรนี้ถูกรวมอยู่ใน CPU และวงจรประมวลผลอื่นๆ เช่น GPU

Memory

หน่วยความจำของคอมพิวเตอร์ มีหน้าทำสำหรับเก็บข้อมูลชั่วคราวสำหรับการประมวลผล เราอาจจะมอง Memory นี้เป็นเหมือน cells ต่างๆ ในโปรแกรม Microsoft Excel

แต่ละ cell นั้นจะมี address หรือหมายเลขสำหรับอ้างถึง ซึ่งเทียบได้กับชื่อ cell ใน Excel และค่าของ cell ที่เป็นตัวเลข 1 ค่า

สิ่งที่คอมพิวเตอร์สามารถกระทำกับ Memory ได้ก็มีแค่การอ่าน และเขียนค่าลงไปใน cell ต่างๆ เท่านั้น ในคอมพิวเตอ์ปัจจุบันแต่ละ Cell ของ Memory นั้นถูกออกแบบมาให้เก็บข้อมูลเป็นเลขฐาน 2 จำนวน 8 ตัว (bit) หรือเรียกว่า byte ซึ่งหมายความว่าค่าที่เก็บได้สูงสุดคือ 2 ยกกำลัง 8 เท่ากับ 256 แบบ

1 byte สามารถเก็บค่าได้ตั้งแต่ 0 ถึง 255 เมื่อไม่สนใจเครื่องหมาย +, -

{[0],[0],[0],[0],[0],[0],[0],[0]} = 0

{[1],[1],[1],[1],[1],[1],[1],[1]} = 255

เก็บค่าได้ตั้งแต่ -128 ถึง +127 หากสนใจเครื่องหมาย +,- เนื่องจากต้องเสีย 1 bit สำหรับเก็บเครื่องหมาย (การแทนเครื่องหมายและกำหนดค่าขึ้นอยู่กับการออกแบบระบบ)

{[1],[0],[0],[0],[0],[0],[0],[0]} = -128

{[0],[0],[0],[0],[0],[0],[0],[0]}= 0

{[0],[1],[1],[1],[1],[1],[1],[1]} = +127

นอกจากนี้เรายังสามารถเก็บข้อมูลขนาดใหญ่กว่านี้ด้วยการใช้หลายๆ byte ร่วมกันอีกด้วย