เรื่องระบบคอมพิวเตอร์และสถาปัตยกรรม มีจุดมุ่งหมายเพื่อให้เข้าใจถึง องค์ประกอบและวิวัฒนาการคอมพิวเตอร์และสถาปัตยกรรม สามารถบอกหน้าที่ และ การทำงานของระบบคอมพิวเตอร์ทั้งการทำงาน ด้าน ฮาร์แวร์ ซอฟแวร์ เข้าใจถึง ระบบบัส หน่วยความจำภายในและภายนอก การนำข้อมูลเข้าและการส่งออกข้อมูล การคำนวณทางคณิตศาสตร์ รูปแบบคำสั่งและการบ่งตำแหน่งที่อยู่ เรื่องโครงสร้างและหน้าที่ของซีพียู

วันพฤหัสบดีที่ 26 พฤศจิกายน พ.ศ. 2558

บทที่ 6 การนำข้อมูลเข้าและการส่งข้อมูลออก


การนำข้อมูลเข้าและการส่งข้อมูลออก
    
         หน่วยรับส่งข้อมูลเข้าออก บางทีจะเรียกว่า อุปกรณ์เชื่อมต่อไอโอ หรือเรียกทับศัพท์ว่า อุปกรณ์อินเตอร์เฟส (interface) เนื่องจากอุปกรณ์เชื่อมต่อนี้จะเป็นชุดของวงจร ซึ่งอาจจะเป็นชุดมาตรฐานที่ติดตั้งมาพร้อมกับระบบคอมพิวเตอร์ ได้แก่ ชุดเชื่อมต่อแป้นพิมพ์ เมาส์ เครื่องพิมพ์ หรืออาจจะผลิตออกมาเป็นแผงวงจร (การ์ด) เพื่อนำไปเสียบลงในช่องขยายเพิ่ม (Expansion slot) ในระบบคอมพิวเตอร์ ดังนั้นจึงอาจจะเรียกว่า อินเตอร์เฟสการ์ดหรือโมดูลไอโอ (คำว่าไอโอ หมายถึง Input / Output) หน่วยรับส่งข้อมูลเข้าออกจะจัดข้อมูลที่รับจากอุปกรณ์ต่อพ่วงให้อยู่ในรูปที่เหมาะสมแล้วส่งให้ระบบคอมพิวเตอร์ ในทางกลับกันก็จะสามารถรับข้อมูลจากระบบคอมพิวเตอร์ แล้วจัดให้อยู่ในรูปที่เหมาะสม เพื่อส่งให้อุปกรณ์ต่อพ่วง การทำหน้าที่ดังกล่าวนี้ เนื่องจากรูปแบบทางข้อมูลที่ใช้ในอุปกรณ์ต่อพ่วงและระบบคอมพิวเตอร์ โดยปกติจะมีรูปแบบที่แตกต่างกัน  หน่วยรับข้อมูลเข้าออกแต่ละหน่วยจะเชื่อมต่ออยู่กับบัสหลัก คือ บัสตำแหน่ง บัสข้อมูล  และบัสควบคุม ดังนั้นการบ่งชื่อหรือตำแหน่งของหน่วยรับส่งข้อมูลเข้าออก สามารถ ทำได้สองวิธี  วิธีแรกโดยการจัดให้หน่วยรับส่งข้อมูลเข้าออกเป็นส่วนหนึ่งของหน่วยความจำหลัก จึงสามารถที่จะใช้ คำสั่ง ส่งข้อมูลเข้าออกหน่วยรับส่งข้อมูลเข้าออกได้เช่นเดียวกับคำสั่งที่ใช้กับหน่วยความจำปกติ วิธีที่สองทำโดยการจัดวงจรเพิ่มเติมเพื่อบ่งตำแหน่งหรือรหัสประจำหน่วยรับส่งข้อมูลเข้าออก กรณีนี้จะต้องใช้คำสั่งเฉพาะของหน่วยรับส่งข้อมูลเข้าออก  การเชื่อมต่ออุปกรณ์ต่อพ่วงปกติจะไม่สามารถเชื่อมต่อเข้าโดยตรงกับบัสหลัก แต่จะต่อผ่านโมดุลไอโอโดยมีเหตุผลดังนี้
        - อุปกรณ์ต่อพ่วงมีอยู่จำนวนมาก ซึ่งมีวิธีทำงานที่แตกต่างกันทำให้ไม่มีความเหมาะสมในการปล่อยให้ซีพียู เป็นตัวควบคุมการทำงานอุปกรณ์ทั้งหมด
        -อัตราการถ่ายเทข้อมูลของอุปกรณ์ต่อพ่วงนั้นช้ากว่าความเร็วในการทำงานของซีพียู มาก ดังนั้นจึงเป็นการไม่เหมาะสมที่จะต่ออุปกรณ์เหล่านี้เข้ากับบัสโดยตรง
        - อัตราการถ่ายเทข้อมูลของอุปกรณ์บางชนิด สูงกว่าความเร็วของหน่วยความจำหลัก หรือแม้กระทั่ง ซีพียู ซึ่งก็ไม่เหมาะสมที่จะนำอุปกรณ์เหล่านี้ต่อเข้าโดยตรงกับบัสเช่นกัน
       - โครงสร้างข้อมูลหรือขนาดของเวิร์ดไม่เหมือนกับรูปแบบหรือขนาดที่เครื่องคอมพิวเตอร์ใช้อยู่

             รูปแบบการรับและส่งข้อมูล
หน่วยรับส่งข้อมูลเข้าออกมีการรับส่งข้อมูลอยู่2ระบบ ได้แก่การรับส่งข้อมูลแบบขนานหรืออาจเรียกว่า PIO (parallel Input / Output) ซึ่งจะสามารถรับส่งข้อมูลได้ครั้งละหลายบิต เช่น 4, 8, 16 หรือ 32 บิต นอกจากการรับส่งข้อมูลแล้ว จะต้องมีการแลกเปลี่ยนสัญญาณควบคุมระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วงด้วย ทั้งนี้เพื่อรักษาจังหวะในการถ่ายเทข้อมูลระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วง สัญญาณควบคุมมีประโยชน์มากเพราะโดยปกติอุปกรณ์ต่อพ่วงจะมีการทำงานในอัตราที่ช้ากว่าระบบคอมพิวเตอร์หากระบบคอมพิวเตอร์ส่งข้อมูลด้วยอัตราความเร็วจนอุปกรณ์ต่อพ่วงรับไม่ทันก็จะเกิดการสูญหายของข้อมูลวิธีแก้ก็คืออุปกรณ์ต่อพ่วงจะมีสัญญาณคอยแจ้งว่าตนเองพร้อมที่จะรับข้อมูลเพิ่มเติม (ready) และหน่วยรับส่งข้อมูลเข้าออกก็จะมีสัญญาณคอยแจ้งว่าจะมีการส่งข้อมูลการประสานงานกันระหว่างสัญญาณทั้งสองนี้เรียกว่าวิธีจับมือ(handshaking)ระหว่างหน่วยรับส่งข้อมูลเข้าออกและอุปกรณ์ต่อพ่วงซึ่งจะทำให้การรับส่งข้อมูลที่มีประสิทธิภาพขึ้น
      หน้าที่และโครงสร้างของหน่วยรับและส่งข้อมูลเข้าออก
      หน้าที่ของหน่วยรับและส่งข้อมูล
      หน่วยรับส่งข้อมูลเข้าออกหรือโมดูลไอโอ จะเป็นตัวคั่นกลางระหว่างระบบคอมพิวเตอร์และอุปกรณ์ต่อพ่วง ดังนั้น โมดูลไอโอซึ่งทำหน้าที่บริการทั้งสองด้าน หน้าที่หลักของโมดูลไอโอ สามารถแบ่งออกได้ดังนี้
    - การควบคุมและรักษาจังหวะการทำงาน
    - การสื่อสารกับโปรเซสเซอร์และสื่อสารกับอุปกรณ์ต่อพ่วง
    - การจัดการบัฟเฟอร์
    - การตรวจสอบข้อผิดพลาด
     ในช่วงเวลาใดๆก็ตามโปรเซสเซอร์อาจจะทำการสื่อสารกับอุปกรณ์ภายนอกหนึ่งอย่างหรือมากกว่านี้ ในรูปแบบที่ไม่สามารถคาดเดาได้ซึ่งขึ้นอยู่กับความต้องการไอโอของโปรแกรมที่ทำงานอยู่ในเวลานั้น ทรัพยากรภายใน เช่น หน่วยความจำหลักและบัสหลัก จะต้องถูกนำมาใช้ในงานร่วมกันระหว่างกิจกรรมหลายชนิด ร่วมทั้งการอ่านหรือบันทึกข้อมูลผ่านโมดูลไอโอ ดังนั้นฟังก์ชันไอโอจึงหมายถึง ความต้องการในการควบคุมและการจับเวลา(control and timing)เพื่อการประสานงานให้ข้อมูลสามารถไหลผ่านทางทรัพยากรภายในในอุปกรณ์ภายนอกได้ตัวอย่างเช่นการควบคุมการถ่ายเทข้อมูลจากอุปกรณ์ภายนอกมายังโปรเซสเซอร์ อาจจะเกี่ยวพันกับการทำงานดังนี้
     - โปรเซสเซอร์ทำการติดต่อกับโมดูลไอโอ เพื่อตรวจสอบสถานะของอุปกรณ์ที่ต้องการใช้งาน
     - โมดูลไอโอส่งข้อมูลแสดงสถานะกลับมาให้
     - ถ้าอุปกรณ์นั้นสามารถใช้งานได้ และพร้อมที่จะถ่ายเทข้อมูล โปรเซสเซอร์จะร้องขอถ่ายเทข้อมูลผ่านการออกคำสั่งไปยังโมดูลไอโอ
     - โมดูลไอโอได้รับข้อมูลชุดแรก (8 บิตหรือ16 บิต)มาจากอุปกรณ์ภายนอก
     - ข้อมูลถ่ายเทจากโมดูลไอโอต่อไปกับโปรเซสเซอร์
ถ้าระบบคอมพิวเตอร์มีบัสหลักใช้งาน การโต้ตอบระหว่างโปรเซสเซอร์และโมดูลไอโอจะเกี่ยวข้องกับการถือครองบัส เหตุการณ์ที่สมมติยังแสดงให้เห็นว่า โมดูลไอโอจะต้องสื่อสารกับโปรเซสเซอร์และสื่อสารกับอุปกรณ์
ภายนอก การสื่อสารกับโปรเซสเซอร์เกี่ยวข้องกับสิ่งต่อไปนี้
      - การถอดรหัสคำสั่ง (command decoding) : โมดูลไอโอรับคำสั่งจากโปรเซสเซอร์ซึ่งปกติจะส่งสัญญาณมาทางบัสควบคุมการทำงาน(controlbus)ตัวอย่างเช่นโมดูลไอโอสำหรับขับดิสก์จะรับคำสั่งเช่น READ SECTOR,WRITE SECTOR,SEEK track number,และ SCAN record ID คำสั่งสองคำสั่งหลังจำเป็นต้องมีการส่งผ่านตัวกำหนดค่ามาด้วย ซึ่งจะส่งมาทางบัสสำหรับถ่ายเทข้อมูล
      - ข้อมูล (Data) : โปรเซสเซอร์จะแลกเปลี่ยนข้อมูลกับโมดูลไอโอ ผ่านทางบัสสำหรับถ่ายเทข้อมูล
      - การรายงานสถานะ (status reporting) : เนื่องจากอุปกรณ์ต่อพ่วง มักจะมีความเร็วต่ำมาก จึงมีความจำเป็นต้องทราบสถานะการทำงานของอุปกรณ์ ตัวอย่างเช่น ถ้าโมดูลไอโอถูกสั่งให้อ่านข้อมูลส่งมาให้โปรเซสเซอร์ อุปกรณ์ดังกล่าวอาจจะยังไม่ว่างเนื่องจากกำลังให้บริการคำสั่งที่มาก่อนหน้านี้ ข้อเท็จจริงข้อนี้สามารถส่งยังโปรเซสเซอร์ผ่านทางสัญญาณสถานะการทำงานซึ่งโดยทั่วไปมีอยู่สองอย่างคือ BUSY          (ไม่-การรับรู้ที่อยู่ (address recognition): อุปกรณ์ไอโอก็คล้ายกับหน่วย ความจำ คือแต่ละ เวิร์ด                  จะมีหมายเลขที่อยู่เฉพาะเป็นของตนเองนั้นคืออุปกรณ์ไอโอแต่ละชิ้นจะต้องมีหมายเลขเฉพาะสำหรับการอ้างอิงเป็นของตนเอง ดังนั้นโมดูลไอโอจะต้องสามารถรับรู้หมายที่อยู่เฉพาะของอุปกรณ์แต่ละชนิดได้  อีกด้านหนึ่ง โมดูลไอโอจะต้องสามารถสื่อสารกับอุปกรณ์ไอโอได้ การสื่อสารนี้ได้แก่  การออกคำสั่ง รายงานสถานะการทำงาน  และการถ่ายเทข้อมูลงานที่มีความสำคัญมากที่สุดส่วนหนึ่งของโมดูลไอโอคือ การทำบัฟเฟอร์สำหรับข้อมูล (data buffering) ความต้องการนี้จะถ่ายเทข้อมูลไปยังหรือมาจากหน่วยความหลักหรือโปรเซสเซอร์นั้นสูงมาก แต่อัตราการถ่ายเทข้อมูลของอุปกรณ์ต่อพ่วงต่างๆ นั้นช้ามากกว่าหลายเท่าตัว และยังมีอัตราการถ่ายเทที่แตกต่างกันในช่วงที่กว้างมากด้วย ข้อมูลที่ถูกส่งมาจากหน่วยจำหลัก ถูกส่งมายังโมดูลไอโอในลักษณะที่มีความเร็วสูงมากแต่เป็นช่วงสั้นๆ เรียกว่า เบิรซท์ (burst) ข้อมูลนั้นจะถูกเก็บไว้ในบัฟเฟอร์ของโมดูลไอโอ จากนั้นจึงถูกส่งไปยังอุปกรณ์ต่อพ่วงด้วยความเร็วต่ำเท่ากับอุปกรณ์นั้นๆ ซึ่งในด้านที่รับข้อมูลนั้นก็จะทำงานที่ความเร็วสูงมาก  เพื่อไม่ให้หน่วยความจำต้องมาถูกบังคับให้ทำงานช้าลงเพราะอุปกรณ์ความเร็วต่ำ โมดูลไอโอจึงสามารถทำงานเท่ากับหน่วยความจำและโปรเซสเซอร์ และจะต้องสามารถทำงานได้ช้ามากเท่ากับความเร็วของอุปกรณ์ต่อพ่วงแต่ละตัวที่มีใช้งาน ในทางกลับกันถ้าอุปกรณ์ไอโอทำงานที่ความเร็วสูงมากกว่าที่หน่วยความจำจะทำงานตามได้ทันแล้ว โมดูลไอโอจะต้องใช้เทคนิคบัฟเฟอร์กับอุปกรณ์นั้น
     โครงสร้างของโมดูลไอโอ
      โมดูลไอโอแต่ละโมดูลมีความแตกต่างกันมากมายหลายแบบขึ้นอยู่กับชนิดและการทำงานของอุปกรณ์ต่อพ่วง จำนวนอุปกรณ์ที่ต่อพ่วงโมดูลที่จะควบคุมได้ ในที่นี้จะกล่าวถึงรูปแบบทั่วไปเท่านั้น แสดงบล็อกไดอะแกรมของโมดูลไอโอทั่วไป โมดูลไอโอจะมีส่วนที่เชื่อมต่อระบบคอมพิวเตอร์โดยผ่าน บัสหลัก ได้แก่ บัสข้อมูล บัสตำแหน่งและบัสควบคุม ข้อมูลที่ส่งผ่านโมดูลจะผ่านบัฟเฟอร์ที่เป็นรีจีสเตอร์ข้อมูล ซึ่งรีจีสเตอร์นี้จะทำหน้าที่พักข้อมูลที่รับจากซีพียูเพื่อส่งไปให้อุปกรณ์ต่อพ่วงหรือทำหน้าที่รับข้อมูลจากอุปกรณ์ต่อพ่วงเพื่อส่งไปให้ซีพียู
       การควบคุมไอโอด้วยโปรแกรม
        วิธีการทำงานของไอโอมีอยู่สามวิธี วิธีแรกคือการควบคุมด้วยโปรแกรม(programmed I/O) ข้อมูลจะเกิดการแลกเปลี่ยนระหว่างโปรเซสเซอร์กับโมดูลไอโอ โปรเซสเซอร์จะประมวลผลโปรแกรมที่เป็นการออกคำสั่งโดยตรงเกี่ยวกับการทำงานของไอโอรวมทั้งการตรวจสอบสถานะของอุปกรณ์ การสั่งอ่านหรือบันทึกข้อมูล และการถ่ายเทข้อมูล เมื่อโปรเซสเซอร์ออกคำสั่งไปยังโมดูลไอโอ โปรเซสเซอร์จะต้องรอจนกว่าการตอบสนองต่อคำสั่งนั้นจะสิ้นสุด ถ้าโปรเซสเซอร์ทำงานได้เร็วกว่าโมดูลไอโอ การรอคอยนี้จะเป็นการเสียเวลาของโปรเซสเซอร์เป็นอย่างยิ่ง วิธีที่สองเรียกว่า การควบคุมไอโอผ่านกระบวนการอินเทอร์รัพท์ (Interrupt-driven I/O) โปรเซสเซอร์จะออกคำสั่งไอโอ แล้วหันกลับไปประมวลผลคำสั่งอื่นต่อไป เมื่อโมดูลไอโอทำงานที่ได้รับมอบนั้นเสร็จเรียบร้อยแล้วก็จะส่งสัญญาณผ่านอินเทอร์รัพท์มาบอกให้ทราบ ทั้งสองวิธีนี้โปรเซสเซอร์จะต้องรับผิดชอบในการดึงข้อมูลออกมาจากหน่วยความจำหลักและส่งไปให้โมดูลไอโอ และจะต้องจัดการบันทึกข้อมูลที่ได้รับจากโมดูลไอโอเข้าไปในหน่วยความจำสำหรับการอ่านข้อมูล วิธีที่สามคือ ดีเอ็มเอ หรือการเข้าถึงหน่วยความจำหลักโดยตรง (Direct memory access: DMA) ด้วยวิธีการนี้ โมดูลไอโอและหน่วยความจำหลักจะแลกเปลี่ยนข้อมูลกันโดยตรง โดยที่โปรเซสเซอร์จะมีส่วนร่วมในการทำงานน้อยมาก
การควบคุมไอโอด้วยโปรแกรมนั้นเมื่อซีพียูประมวลผลโปรแกรมหลักจะทำการตรวจสอบรีจีสเตอร์สถานะ (I/O status register) ของไอโอเป็นระยะ ๆ (ตามเวลาที่กำหนดไว้) ว่าอุปกรณ์ต่อพ่วงใดแสดงความพร้อมที่จะขอติดต่อกับซีพียู หรืออีกกรณีหนึ่งเมื่อซีพียูพบคำสั่งที่เกี่ยวข้องกับไอโอ ซีพียูก็จะเรียกใช้ชุดคำสั่งหรือโปรแกรมย่อย เพื่อให้บริการอุปกรณ์ต่อพ่วงนั้น จากนั้นก็จะเปลี่ยนบิตบอกสถานะของโมดูลไอโอให้เป็น 0หรือเป็นค่าที่เหมาะสม เพื่อเมื่อปฏิบัติเสร็จเรียบร้อยโมดูลไอโอก็จะไม่ทำอะไรต่อ ดังนั้นจึงเป็นหน้าที่ของ ซีพียูที่จะคอยตรวจสอบ ดูสถานะของโมดูลไอโอจนพบว่างานที่ได้สั่งให้ทำนั้นเสร็จเรียบร้อยแล้วในการประมวลผลคำสั่งที่เกี่ยวข้องกับไอโอ ซีพียูจะต้องกำหนดหมายเลขที่อยู่หรือแอดเดรสของโมดูลไอโอและอุปกรณ์ต่อพ่วง หรืออุปกรณ์ต่อพ่วงแต่ละชนิดจะได้รับหมายเลขที่ไม่ซ้ำกัน เมื่อซีพียูส่งคำสั่งไอโอมายังโมดูลไอโอ คำสั่งนั้นจะระบุหมายเลขที่อยู่ของอุปกรณ์ต่อพ่วงที่ต้องการไว้ด้วยเสมอ ดังนั้นโมดูลไอโอจะต้องตรวจสอบสัญญาณที่มาตามสายสัญญาณว่าเป็นหมายเลขที่อยู่ของตนเองหรือไม่ คำสั่งที่ต้องการให้อุปกรณ์ต่อพ่วงปฏิบัติจะมี 4 อย่างด้วยกันคือ
        - การควบคุม (Control)  ใช้ในการกระตุ้นให้อุปกรณ์ไอโอพร้อมที่จะปฏิบัติงาน และบอกให้ทราบว่าจะต้องทำงานอะไร ตัวอย่างเช่น หน่วยเทปแม่เหล็กอาจได้รับคำสั่งให้ม้วนเทปกลับหรือหมุนเทปไปข้างหน้าหนึ่งระเบียน คำสั่งเหล่านี้จะได้รับการปรับแต่งให้มีความเหมาะสมกับอุปกรณ์แต่ละชนิด
       - การทดสอบ (Test) ใช้สำหรับการทดสอบสถานะการทำงานหลายอย่างของโมดูลไอโอและอุปกรณ์ โปรเซสเซอร์จะต้องการทราบว่าอุปกรณ์ที่ต้องการใช้งานนั้น มีความพร้อมใช้งานอยู่หรือไม่ หรือต้องการทราบว่าคำสั่งที่ให้ปฏิบัติก่อนหน้านี้ได้เสร็จเรียบร้อยหรือยัง หรือว่ามีข้อผิดพลาดใด ๆ เกิดขึ้นหรือไม่
      - การอ่านข้อมูล (Read) จะทำให้โมดูลไอโออ่านข้อมูลมาจากอุปกรณ์ที่ต่อพ่วงและใส่เข้าไว้ในบัฟเฟอร์  จากนั้นโปรเซสเซอร์จะสามารถนำข้อมูลไปใช้ โดยออกคำสั่งให้โมดูลไอโอใส่ข้อมูลเข้าไปในบัสนำสั่ง- การบันทึกข้อมูล (Write)  จะทำให้โมดูลไอโอนำข้อมูล (ไบต์ หรือ เวิร์ด) จากบัสนำส่งข้อมูล ไปส่งต่อให้กับอุปกรณ์ต่อพ่วงที่ต้องการ
       การควบคุมไอโอด้วยอินเทอร์รัพท์
การควบคุมไอโอด้วยโปรแกรม โดยทั่วไปจะไม่เป็นที่นิยมเพราะซีพียูจะต้องเสียเวลามาคอยตรวจสอบสถานะการทำงานของโมดูลไอโออยู่ตลอดเวลา ในความเป็นจริงแล้วควรจะปล่อยให้ซีพียูทำงานตามโปรแกรมหลัก ต่อเมื่อจะป้อนข้อมูลให้ซีพียู จึงแจ้งหรือขัดจังหวะซีพียู ให้มาบริการอุปกรณ์ต่อพ่วงนั้น ๆ ชั่วคราว แล้วจึงกลับไปทำงานหลักต่อ วิธีดังกล่าวนี้ คือหลักการของการอินเทอร์รัพท์ การอินเทอร์รัพท์จะต่างจากวิธีควบคุมโปรแกรมตรงที่ซีพียูจะทำงานไปตามภารกิจหลักต่อเมื่ออุปกรณ์ต่อพ่วงใดส่งสัญญาณให้แก่ซีพียู ซีพียูจะหยุดภารกิจการทำงานตามโปรแกรมหลักไว้ชั่วขณะเพื่อไปทำงานตามโปรแกรมย่อย ซึ่งเป็นการบริการอุปกรณ์ต่อพ่วงนั้นในไมโครโปรเซสเซอร์แทบทุกประเภท การอินเทอร์รัพท์กระทำโดยการที่อุปกรณ์ต่อพ่วงส่งสัญญาณอิเล็กทรอนิกส์ไปเปลี่ยนระดับตรรกะที่ขาหนึ่งของไมโครโปรเซสเซอร์ เราเรียกขานั้นว่า ขาอินเทอร์รัพท์ เพื่อแจ้งให้ไมโครโปรเซสเซอร์ทราบ กระบวนการในการเกิดอินเทอร์รัพท์ จะเกิดเหตุการณ์ดังต่อไปนี้
       - อุปกรณ์ไอโอจะส่งสัญญาณอินเทอร์รัพท์ไปยังซีพียู
      - ซีพียูทำการประมวลผลคำสั่งในโปรแกรมที่กำลังทำงานอยู่จนเสร็จเรียบร้อย (เฉพาะคำสั่งที่กำลังทำอยู่นั้น) ก่อนที่จะตอบสนองต่ออินเทอร์รัพท์
      - ซีพียูจะทำการทดสอบอินเตอร์รัพท์ ตรวจสอบว่ามีเพียงอินเทอร์รัพท์เดียว และส่งสัญญาณตอบรับไปยังอุปกรณ์ที่ส่งสัญญาณอินเทอร์รัพท์นั้น การตอบรับจะทำให้อุปกรณ์นั้นหยุดส่งสัญญาณอินเทอร์รัพท์
      - ซีพียูจะเตรียมการประมวลผลโปรแกรมสำหรับอินเทอร์รัพท์นั้น (เรียกว่า interrupt routine) ซึ่งเริ่มต้นด้วยการบันทึกข้อมูลที่เกี่ยวข้องกับการประมวลผลโปรแกรมที่กำลังทำงานอยู่นั้น (ก่อนเกิดอินเทอร์รัพท์) ประกอบด้วย    
      1. สถานะการทำงานของโปรเซสเซอร์ซึ่งเก็บอยู่ในรีจีสเตอร์ตัวหนึ่ง เรียกว่า Program status word (PSW)
      2. ตำแหน่งของคำสั่งต่อไปที่จะถูกประมวลผล ซึ่งเก็บอยู่ในรีจีสเตอร์เรียกว่า Program counter (PC) ข้อมูลเหล่านี้อาจถูกเก็บในสแต็กควบคุมการทำงานของระบบ)
   - โปรเซสเซอร์จะดึงคำสั่งแรกของโปรแกรมสำหรับอินเทอร์รัพท์ที่เกิดขึ้นนั้น ขึ้นมาทำงานเพื่อตอบเสนองต่ออินเทอร์รัพท์ โปรแกรมดังกล่าวอาจเป็นเพียงโปรแกรมเดียวสำหรับอินเทอร์รัพท์แต่ละอย่าง หรือโปรแกรมเดียวสำหรับอุปกรณ์แต่ละอย่าง ซึ่งขึ้นอยู่กับสถาปัตยกรรมของคอมพิวเตอร์หรือระบบปฏิบัติการที่เลือกใช้ ในกรณีที่มีโปรแกรมสำหรับอินเทอร์รัพท์มากกว่าหนึ่งโปรแกรม โปรเซสเซอร์จะต้องทำการตัดสินใจเลือกโปรแกรมหนึ่งขึ้นมาทำงานซึ่งข้อมูลสำหรับการตัดสินใจนี้อาจถูกส่งมาพร้อมกับสัญญาณอินเทอร์รัพท์แล้ว หรือโปรเซสเซอร์อาจจะต้องส่งสัญญาณไปถามอุปกรณ์ที่เป็นผู้ส่งสัญญาณอินเทอร์รัพท์เข้ามาจึงจะสามารถเลือกโปรแกรมที่ถูกต้องได้
        - ณ เวลานี้ โปรแกรมเคาน์เตอร์และ PSW ที่เกี่ยวข้องกับโปรแกรมที่ถูกขัดจังหวะการทำงานได้ถูกบันทึกไว้ในสแต็กของระบบเรียบร้อยแล้ว อย่างไรก็ตาม ยังคงมีข้อมูลอื่นที่ถือได้ว่าเป็นส่วนหนึ่งของสถานะของโปรแกรมที่กำลังถูกประมวลผลอยู่ นั่นคือข้อมูลที่เก็บอยู่ใน รีจีสเตอร์ภายในตัวโปรเซสเซอร์จะต้องถูกบันทึกไว้เช่นเดียวกัน เนื่องจากรีจีสเตอร์เหล่านี้อาจถูกใช้โดยโปรแกรมสำหรับอินเทอร์รัพท์ ดังนั้นข้อมูลในรีจีสเตอร์เหล่านี้ (และอาจหมายถึงข้อมูลแสดงสถานะอื่น ๆ ) จะต้องถูกบันทึกไว้ด้วย โดยทั่วไปโปรแกรมสำหรับอินเทอร์รัพท์จะเริ่มต้นการทำงานด้วยการบันทึกข้อมูลในรีจีสเตอร์ลงในสแต็ก
- โปรแกรมนี้ก็จะเริ่มทำงานต่อไป ด้วยการตรวจสอบสถานะที่เกี่ยวข้องกับการทำงานไอโอที่ต้องการ หรือเหตุการณ์อื่นที่ทำให้เกิดอินเทอร์รัพท์ การทำงานนี้อาจรวมถึงการส่งคำสั่งเพิ่มเติมหรือการส่งการตอบรับไปยังอุปกรณ์ไอโอ
       - เมื่อโปรแกรมอินเทอร์รัพท์ทำงานเสร็จแล้ว ก็จะปิดท้ายด้วยการคืนค่าให้แก่ รีจีสเตอร์ในซีพียูที่นำมาจากสแต็กของระบบ
      - การทำงานส่วนสุดท้ายคือ การคืนค่าให้แก่ PSW และโปรแกรมเคาน์เตอร์ที่นำมาจากสแต็กของระบบ ทำให้คำสั่งต่อไปที่จะถูกประมวลผลนั้นถูกอ่านมาจากคำสั่งในตำแหน่งต่อไปของโปรแกรมที่ถูกขัดจังหวะการทำงานก่อนหน้านี้
       การเข้าถึงหน่วยความจำโดยตรง
ข้อเสียของระบบไอโอที่ใช้กลไกอินทอร์รัพท์และไอโอที่โปรแกรมควบคุม แม้ว่าการควบคุมไอโอที่ใช้กลไกอินเทอร์รัพท์ จะมีประสิทธิภาพมากกว่าการควบคุมโดยใช้โปรแกรมแต่ก็ยังต้องอาศัยการทำงานของโปรเซสเซอร์ในการถ่ายเทข้อมูลระหว่างหน่วยความจำและโมดูลไอโอ นั้นคือข้อมูลทั้งหมด (ไม่ว่าจะเป็นการอ่านหรือการบันทึกข้อมูล) จะต้องเดินทางผ่านโปรเซสเซอร์เสมอ ทำให้เกิดประประสิทธิภาพต่ำเนื่องจาก
   - อัตราการถ่ายเทข้อมูล จะถูกกำจัดโดยความเร็วที่โปรเซสเซอร์สามารถจะให้บริการแก่อุปกรณ์นั้นๆได้
  -โปรเซสเซอร์จะถูกดึงให้มาทำงานในระหว่างการถ่ายเทข้อมูลไอโอ โปรเซสเซอร์จะต้องทำการประมวลผลคำสั่งจำนวนหนึ่งสำหรับการถ่ายเทข้อมูลไอโอแต่ละครั้ง
   
    สรุป
     หน่วยรับส่งข้อมูลเข้าออก ทำหน้าที่เป็นตัวกลาง การถ่ายเทข้อมูลระหว่างระบบคอมพิวเตอร์กับโลกภายนอก หรือเป็นอุปกรณ์เชื่อมต่อระหว่างระบบคอมพิวเตอร์กับอุปกรณ์ ต่อพ่วง ซึ่งอาจเรียกว่า อุปกรณ์อินเตอร์เฟส เนื่องจากชุดอุปกรณ์ดังกล่าวประกอบขึ้นเป็นโมดูลชุดวงจรอีเล็กทรอนิกส์ จึงเรียกว่า โมดูลไอโอ การรับส่งข้อมูลของโมดูลไอโอจะทำได้สองรูปแบบ คือ การรับส่งข้อมูลแบบขนาน การรับส่งแบบนี้ทั้งด้านที่ติดต่อกับซีพียูและด้านที่ติดต่อกับอุปกรณ์ ต่อพ่วง จะเป็นการรับส่งแบบขนานทั้งสองด้าน การรับส่งจะกระทำได้ตั้งละหลายบิต อีกรูปแบบหนึ่งเป็นการรับส่งแบบอนุกรม การรับส่งแบบนี้ทางด้านนี้ติดต่อกับซีพียู จะเป็นการรับส่งแบบขนานส่วนทางด้านอุปกรณ์ต่อพ่วงจะเป็นการรับส่งแบบอนุกรมซึ่งจะรับส่งครั้งละหนึ่งบิต  โครงสร้างหน่วยรับส่งข้อมูล จะมีส่วนประกอบที่สำคัญ ได้แก่ รีจีสเตอร์ข้อมูล ซึ่งจะทำหน้าที่เป็นตัวพักข้อมูล รีจีสเตอร์สถานะและรีจีสเตอร์ควบคุม ซึ่งจะควบคุมและให้จังหวะการทำงานของโมดูลไอโอ นอกจากนั้นก็จะมีวงจรลอจิกเพื่อเชื่อมต่อเข้าระบบบัสของคอมพิวเตอร์ และเชื่อมต่อเข้าอุปกรณ์ต่อพ่วง การควบคุมการทำงานของโมดูลไอโอ จะทำได้ 3 วิธี ได้แก่ การควบคุมด้วยโปรแกรม การควบคุมด้วยอินเทอร์รัพท์ และการควบคุมด้วย ดีเอ็มเอ วิธีที่มีประสิทธิภาพที่สุด ได้แก่ ดีเอ็มเอ แต่อย่างไรก็ตามการทำงานจริงก็ยังใช้ทั้ง 3 วิธี  มาตรฐานการเชื่อมต่อ USB และ FireWire เป็นการเชื่อมต่อแบบอนุกรม ซึ่งปัจจุบันเป็นมาตรฐานหนึ่งที่ถูกติดตั้งมากับระบบคอมพิวเตอร์ USB ให้ความเร็วในการรับส่งข้อมูลได้ที่ 1.512 Mbps สามารถต่อพ่วงอุปกรณ์ได้มากถึง 127 อุปกรณ์ ส่วน FireWire ความเร็วในการรับส่งอยู่ที่ 200800 Mbps และต่อพ่วงอุปกรณ์ได้ถึง 63 อุปกรณ์



 ที่มา http://dol-kalon.blogspot.com/2009/03/6.html

วันพุธที่ 25 พฤศจิกายน พ.ศ. 2558

การคำนวณทางคณิตศาสตร์

                                  ตารางแสดงการเปรียบเทียบเลขฐานสิบ ฐานสอง ฐานแปด ฐานสิบหก

เลขฐานสิบ
เลขฐานสอง
เลขฐานแปด
เลขฐานสิบหก
0
0
0
0
1
1
1
1
2
10
2
2
3
11
3
3
4
100
4
4
5
101
5
5
6
110
6
6
7
111
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
6
E
15
1111
17
F
16
10000
20
10
17
10001
21
11
 .
.
.
.
.
 .
.
.
 .
.
.
30
11110
36
1E
31
11111
37
1F
            ข้อสังเกต  1. เลขฐานใดๆ จะมีตัวเลขน้อยกว่าฐานนั้นๆ อยู่ 1 เสมอ
การแทนลักษณะข้อมูลในคอมพิวเตอร์
          การแทนข้อมูลด้วยเลขฐานสอง(Binary) การแทนด้วยระบบเลขฐานแปด (Octal) และแทนด้วยข้อมูลระบบเลขฐานสิบหก (Hexadecimal) เพราะระบบตัวเลขทั้งสาม นำมาใช้กับระบบคอมพิวเตอร์ปัจจุบันเป็นส่วนมาก
         ตัวเลขที่เราใช้อยู่ในปัจจุบัน มีส่วนสำคัญ 2 ส่วนคือ สัญลักษณ์ และมูลค่า ในการเขียนจำนวนเลขจะต้องมีเลขฐานกำกับไว้ทุกครั้ง ไม่เช่นนั้นอาจเข้าใจผิดกันได้ เช่น จำนวน 123 อาจเป็นได้ทั้งเลขฐาน 5,8,10,16 ก็ได้ถ้าราไม่เขียนฐานกำกับไว้ชัดเจน จะยกเว้นจำนวนเลขที่ไม่ต้องเขียนฐานกำกับไว้ก็ได้ เฉพาะเลขฐานสิบเท่านั้น เพราะเราคุ้นเคยกันจึงยกเว้นให้ ส่วนเลขฐานอื่นๆ จะต้องเขียนเลขกำกับไว้ทุกครั้ง
       1 การแปลงเลขฐานสิบเป็นฐานสอง
       3.1.1   การแปลงเลขจำนวนเต็ม
วิธีการแปลงที่ 1 โดยการลบ
       1.เอา 2โดยให้มีค่าใกล้เคียงหรือเท่ากับเลขฐานสิบที่ต้องการจะแปลงโดยค่ายกกำลังลดลงทีละ 1
       2.เอาค่าที่ยกกำลังที่ได้จากขั้นที่ 1 มาลบออกจากเลขฐานสิบนั้นถ้าลบได้ใส่ 1 ถ้าลบไม่ได้ใส่ 0 เริ่มจากซ้ายมือ
       3.ทำไปเรื่อยๆ จนหมด แล้วนำเลขที่ลบได้หรือไม่ได้มาวางเรียงโดยเริ่มจากซ้ายมือ
ตัวอย่าง 3.1 แปลงเลขฐานสิบ 29 ไปเป็นเลขฐานสอง

               วิธีการแปลงที่ 1 โดยการหาร
1.  เอาเลขฐานสิบที่ต้องการแปลงตั้งหารด้วยสอง
2.  สนใจเศษ ถ้าหารลงตัว ให้เศษเป็น 0 ถ้าหารไม่ลงตัว ให้เศษเป็น 1
3. หารไปเรื่อยๆ จนกว่าตัวตั้งจะมีค่าน้อยกว่าตัวหาร
4.  การตอบ จะเรียงข้อมูลจากล่างขึ้นบน โดยตัวบนจะเป็นหลักหน่วยเสมอ ตัวถัดไปจะนำมาจัดเรียงเป็นหลักสิบ ทำแบบนี้ไปเรื่อยๆ
ตัวอย่าง 3.2 แปลงเลขฐานสิบ 29 ไปเป็นเลขฐานสอง

                3.1.2 การแปลงเลขทศนิยมฐานสิบเป็นเลขฐานสอง
      กรณีเลขฐานสิบเป็นทศนิยม เราก็สามารถทำได้โดยการคูณเลขทศนิยมด้วย 2 ทุกๆ ครั้งที่คูณ ส่วนที่เป็นจำนวนเต็มในผลคูณ เราจะนำมาเป็นค่าของเลขฐานสอง แล้วนำค่าที่เป็นทศนิยมมาคูณด้วยสองอีก ทำไปเรื่อยๆจนกว่าจะไม่มีค่าหลังสุด แต่กรณีเป็นเลขทศนิยมไม่รู้จบก็จะตัดเอาตามจำนวนที่ต้องการ
ตัวอย่าง 3.3 จงแปลง 0.725 เป็นเลขฐานสอง


วิธีการแปลงทศนิยมเลขฐานสิบเป็นฐานสอง
1. เขียนตัวเลขที่จะแปลง
2. นำตัวเลขนั้นมาคูณกับ 2 ผลลัพธ์ที่ได้ ให้สนใจเฉพาะเลขจำนวนเต็ม ซึ่งอาจจะเป็น 0 หรือ 1  ก็ได้ ส่วนชุดตัวเลขหลังจุดทศนิยมทางขวามือ ให้นำมาเริ่มทำเหมือน ข้อ 2 ใหม่
3 ให้ดำเนินการไปเรื่อยๆ จนกว่าเลขทศนิยมจะเป็น 0 เป็นตัวเลขวนซ้ำ หรือเป็นทศนิยมไม่รู้จบให้หยุดทำงาน
ข้อสังเกต   1.เลขฐานสิบที่ต้องการแปลงเป็นฐานสองจะนำมาคูณ หรือ หารกับ เลข 2 เท้านั้น  เนื่องจาก แปลงจากฐานสิบ ไปเป็น ฐานสอง
    2.วิธีการตอบกรณีเป็นจำนวนเต็มจะเขียนคำตอบจากล่างขึ้นบนกรณีเป็นทศนิยมจะเขียนคำตอบจากบนลงล่าง
             3.2 การแปลงเลขฐานสิบเป็นฐานแปด
วิธีการทำใช้หลักการเดียวกับการแปลงเลขฐานสิบเป็นฐานสอง ให้คูณหรือหารด้วยเลขฐาน โดยมี 2 กรณี
การแปลงเลขจำนวนเต็ม  ต้องหารด้วยฐาน คือ 8
ตัวอย่าง 3.4 จงแปลง 356 ฐานสิบ เป็นเลขฐานแปด
              8)  356      =  8 x 44    = 352     นำ   356 – 352   จะได้    เศษ  =  4
              8)   44       =   8 x 5     = 40       นำ   44 – 40       จะได้เศษ     = 4
         5.ตอบได้เพราะตัวตั้ง (5) มีค่าน้อยกว่าตัวหาร (8)
ดังนั้น  (356)10   =   (544)8
 การแปลงทศนิยม  ต้องคูณด้วยฐาน คือ 8
       ตัวอย่าง 3.5 จงแปลง   0.72   ฐานสิบ เป็นเลขฐานแปด
       72 x 8   =   5.76   เหลือ   .76   ใส่   5
       76 x 8   =   6.08   เหลือ   .08   ใส่   6
       08 x 8   =   0.64   เหลือ   .64   ใส่   0
       64 x 8   =   5.12   เหลือ   .12   ใส่   5
       12 x 8   =   0.96   เหลือ   .96   ใส่   0      
       96 x 8   =   7.68   เหลือ   .68   ใส่   7
       68 x 8   =   5.44   เหลือ   .44   ใส่   5
       44 x 8   =   3.52   เหลือ   .52   ใส่   3
       ตอบ       (0.72)10    =   (0.56050753)
                2  (0.72)10      =   (0.56)2

    3.3 การแปลงเลขฐานสิบเป็นฐานสิบหก
   วิธีการทำใช้หลักการเดียวกับการแปลงเลขฐานสิบเป็นฐานแปด ให้คูณหรือหารด้วยเลขฐาน โดยมี 2 กรณี
1.2.1  การแปลงเลขจำนวนเต็ม  ต้องหารด้วยฐาน คือ 16
        ตัวอย่าง 3.6 จงแปลง 2531 ฐานสิบ เป็นเลขฐานสิ
        16)  2531  =  16 x 157 = 2528 นำ   2531 – 2528   จะได้เศษ  = 3
       16)   158    = 16 x 9 = 144  นำ 158 – 144 จะได้เศษ    = 14 --> E  9
                  ตอบได้เพราะตัวตั้ง (9) มีค่าน้อยกว่าตัวหาร (16)
                  ดังนั้น  (2531)10   =   (9E3)16
1.2.2     การแปลงทศนิยม  ต้องคูณด้วยฐาน คือ16
        ตัวอย่าง 3.7 จงแปลง   0.85   ฐานสิบ เป็นเลขฐานสิบหก
        85 x 16   =   13  .60   เหลือ   .60   ใส่   13
        60 x 16   =    9  .60   เหลือ   .60   ใส่   9
       ดังนั้นจะได้  =  13   9
       = . D9  ( 13 = D ในเลขฐานสิบหก)
        ตอบ      (0.85)10    =   (0.D9)16
       ข้อสังเกต       เลขฐานสิบหก   จะใส่สัญลักษณ์ที่เป็นภาษาอังกฤษ   แทนตัวเลขตั้งแต่  10  ถึง  15
       เช่น จากตัวอย่างที่ 3.7 ใส่  E  แทน  14  เวลาตอบ
         ต้องตอบเป็น        5E16        (ห้าอีฐานสิบหก)
         ไม่ใช่ตอบ             51416      (ห้าสิบสี่ฐานสิบหก)
        3.4  การแปลงเลขฐานสองเป็นฐานสิบ
        3.4.1  การแปลงเลขจำนวนเต็ม เราสามารถทำการแปลงจากเลขฐานสอง  ไปเป็นเลขฐานอื่นๆ ที่เราถนัดก่อน เช่น แปลงไปเป็นเลขฐานแปด หรือเลข ฐานสิบหก ก่อนแล้วนำผลที่ได้ ไปแปลงเป็นเลขฐานสิบ
                ตัวอย่าง 3.8  จงแปลงเลข  11102 เป็นเลขฐานสิบ
                11102     =   (1x23) + (1x22) + (1x21) + (0x20)
                             =    (1x8) + (1x4) + (1x2) + (0x1)                            
                             =     8     +     4    +    2    +    0                  
                11102     =    1410  หรือ 11102     =   14
   วิธีการแปลง  1.เขียนเลขฐานสองที่จะแปลง  1  1  1  0
                    2.หาค่าประจำหลักโดยเริ่มจากหลักหน่วยในที่นี้คือ   0   จะได้   13   12   11   00
                                3.นำเลขแต่ละหลักมาคูณกับค่าของฐาน  คือ  2  ยกกำลัง ค่าประจำหลักจากข้อ 2 และนำแต่ละหลักมาบวกกัน (1x23) + (1x22) + (1x21) + (0x20)
                    4.หาค่าจากการยกกำลัง   (1x8)  + (1x4)  + (1x2)  + (0x1) แล้วคูณกับเลขแต่ละหลัก
                    5. นำแต่ละหลักมาบวกกัน   8 + 4 + 2 + 0  =  14
           3.4.2 การแปลงเลขเลขทศนิยม
          ใช้หลักการเดียวกับการแปลงเลขจำนวนเต็มฐานสองไปเป็นฐานสิบ  แต่ค่าประจำหลักของแต่ละหลักจะติดลบ  เพราะเป็นจำนวนเลขที่อยู่หลังทศนิยม
                ตัวอย่าง 3.9  จงแปลงเลข  0.0112 เป็นเลขฐานสิบ
                0.0112        =    (0x20) + (0x2-1) + (1x2-2) + (1x2-3)            
                                =     0      +     0      + (1/4)    +  (1/8)           
                                =     0      +     0      +   0. 25  +  0.125
                0.0112        =    0.37510 
           วิธีการแปลง  1. เขียนเลขฐานสองที่จะแปลง  0.011
            2. หาค่าประจำหลักของเลขทศนิยมโดยเริ่มจากหลักซ้ายสุดที่อยู่ติดกับเลขทศนิยม
0  =  0-1 , 1  =   1-2 ,1  =  1-3   โดยค่าประจำหลักจะลดลงที่ละหนึ่ง   จากซ้ายที่ติดกับจุดทศนิยม   ไปทางขวา   (หลักการหาค่าจะตรงกันข้ามจำนวนเต็ม)
            3. นำเลขแต่ละหลักมาคูณกับค่าของฐาน คือ  2 ยกกำลังค่าประจำหลักจากข้อ 2 และนำแต่ละหลักมาบวกกัน (0x2-1) + (1x2-2) + (1x2-3)
            4. หาค่าจากการยกกำลัง   (0 x 1/2) + (0 x 1/4) + (11/8)  แล้วคูณกับเลขในแต่ละหลัก            
            5. นำแต่ละหลักมาบวกกัน   0    +     0.25    +    0.125   =   0.375
          ข้อสังเกต จะต้องนำตัวเลขแต่ละหลักที่ต้องการแปลง  มาทำการคูณกับเลข 2 ยกกำลังค่าประจำหลักของแต่ละหลัก  (เพราะแปลงฐานสองไปเป็นฐานสิบ จะต้องคูณกับ 2 เท่านั้น)
          สรุป  วิธีการแปลงฐานสองให้เป็นเลขฐานสิบได้ดังนี้
         วิธีที่ 1.  เขียนเลขฐานสองที่ต้องการจะแปลง
         2.  เขียนค่าประจำหลักแสดงไว้โดยใช้ฐาน  2  ยกกำลัง  โดยเริ่มจากขวา เป็นค่ายกกำลัง 20 21 22 23 24 ไปเรื่อยๆ จนหมดเลขที่จะนำมาแปลง  ในกรณีที่เป็นทศนิยม จะเริ่มจากซ้าย  เป็นค่ายกกำลัง  2-1 2-2 2-3 2-4 ไปเรื่อยๆ จนหมดเลขที่จะนำมาแปลง
         3. เลขฐานสองที่อยู่ในหลักใดเป็นศูนย์ ให้ตัดออกไม่ต้องนำมาคำนวณ  ให้นำเลขฐานสองที่มีค่า ประจำหลักเป็นหนึ่งเท่านั้นจึงนำมาหาค่า
         4. นำผลที่ได้จากการเอา 2 ยกกำลังค่าประจำหลัก ของแต่ละหลัก จากข้อ มาบวกกันทุกหลักจะได้ผลลัพธ์นั่นคือค่าของเลขฐานสิบที่มีค่าตรงกับค่าของเลขฐานสองนั้นๆ
วิธีที่ 2  1. เขียนเลขฐานสองที่ต้องการนำมาแปลง
        2. เขียนค่าประจำหลักโดยใช้สูตร 2 ยกกำลังเพิ่มขึ้นทีละ 1 เช่น ถ้ามีเลขที่ต้องการแปลง 4 ตัวจะได้ สูตร   8   4   2  1   ตั้งให้ตรงหลักโดยของเลขฐานสองนั้น
        3.  ให้นำค่าประจำหลักในข้อ 2 มารวมกัน โดยพิจารณาเฉพาะค่าที่ตรงกับหลักเลขฐานสอง ที่เป็น 1 ถ้าตรงกับเลขฐานสองที่มีค่าเป็น 0 (ศูนย์) ไม่ต้องพิจารณา
   ตัวอย่าง 3.10 จงแปลง 11102  เป็นเลขฐานสิบ
วิธีที่ 1    11102                     =  (1x23)+ (1x22)+ (1x21)+ (0x20)
                                         =    8    +     4    +     2    +   0
                                         =   (14)10
 วิธีที่ 2    11102                     =      1              1              1              0
                                                     8               4              2              1
                                          =      8    +     4     +     2     +   0
                                          =      (14)10
 ตัวอย่าง 3.11 จงแปลง 100011012  เป็นเลขฐานสิบ
วิธีที่ 1 100011012            =    (1x27)+ (0x26)+ (0x25)+ (0x24)+ (1x23)+ (1x22)+ (0x21)+ (1x20)
                                    =    (1x27)+ (1x23)+ (1x22)+ (1x20)
                                    =     128    +     8    +     4    +     1
                                    =     (141)10
          3.5 การแปลงเลขฐานสองเป็นเลขฐานแปด
ในการแปลงเลขฐานสองเป็นเลขฐานแปดนั้นมีการดำเนินการหลายวิธี ในกรณีนี้เลือกมาให้ศึกษาในกรณีที่คิดว่าง่ายที่สุด โดยการแบ่งกลุ่มเลขฐานสองออกเป็นชุด ชุดละ 3 บิต(ตัว) ของเลขฐานสองที่ต้องการจะแปลง
         3.5.1    การแปลงเลขจำนวนเต็มฐานสองเป็นฐานแปด
       วิธีการแปลง
1.   เขียนตัวเลขฐานสองที่ต้องการจะแปลงเป็นเลขฐานแปด
2.   แบ่งช่วงเลขจากด้านขวา (จากหลักหน่วย) มาเป็นชุดตัวเลข โดยแบ่งชุดละ 3 ตัว (3 บิต) เพราะได้จาก 23 = 2  คูณกัน 3 ครั้ง ( 2x2x2 ) = 8 จึงเรียกว่าเลขฐานแปด  ถ้าชุดตัวเลขไม่ครบ 3 ตัว ให้เติม 0 ลงไปด้านซ้ายมือให้ครบ 3 ตัว เช่น
2.1      1001102         =            100   110                 แสดงว่าได้เลข  2 ชุด
2.2      1100011101   =      001   100   011   101        แสดงว่าได้เลข  4 ชุด
                            เติม 0 ทางซ้ายมือ เพื่อให้ครบ 3 ตัว (3 บิต)
        3. เขียนเลขประจำหลักแต่ละหลักแต่ละหลัก เริ่มจากหลักหน่วย ดังนี้   4   2   1   เพราะ 4+2+1 = 7 เป็นตัวเลขสูงสุดของฐานแปด ได้จาก 22 = 4  ,  21 = 2  ,  20 = 1  ซึ่งเราเรียกว่าค่าประจำหลัก
       4.หลังจากแบ่งชุดตัวเลขฐานสองในข้อ  2  เสร็จแล้ว  ให้พิจารณาว่าถ้าเลขฐานสองตำแหน่งใดเป็น  0 ให้ตัดทิ้ง  ไม่ต้องนำมารวม ถ้าเลขหลักใดเป็น  1  ให้นำค่าประจำหลักมารวมกันในชุดตัวเลขชุดนั้น  แล้วนำค่าตัวเลขของแต่ละชุดมาเขียนเรียงกัน
        3.5.2 การแปลงทศนิยมฐานสองเป็นฐานแปด
       วิธีการแปลง  หลักการแปลง ทำเหมือนกันกับการแปลงจำนวนเต็มฐานสองเป็นฐานแปด แต่การแบ่งชุดของตัวเลขชุดละ 3 ตัวให้เริ่มนับจากตัวเลขถัดจากจุดทศนิยม(ด้านซ้ายมือสุดติดจับจุดทศนิยม) โดยใช้  4  2  1 เหมือนกัน และถ้าชุดใดมีตัวเลขไม่ครบ 3 ตัว ก็ให้เติม 0 ด้านขวามือสุดให้ครบ 3 (การเติม 0 จะเติมตรงกันข้ามกับกรณีจำนวนเต็ม)
         ตัวอย่าง   จงแปลง 10011.11012  เป็นเลขฐานแปด
                   

           



ที่มา:https://sites.google.com/site/30251commath/bth-reiyn/-4