Archive for the ‘CPE23/V’ Category

[rant] รายงานการสอบ Midterm 1/2553

Posted on August 4th, 2010 in CPE, CPE23/V, poem, rant | 9 Comments »

(มีคำหยาบคาย ระดับ 15+ โปรดใช้วิจารณญานในการรับชม)

สภาพเละเทะมากครับ ผ่านไปครึ่งทางสิ้นหวังแล้วกับการสอบกลางภาคต้น 2553

สอบไปได้ทำไปก็ไม่ผ่าน
สอบทุกวันตั้งแต่จันทร์จนเกือบเสาร์
ทำยังไงก็ไม่ได้หรอกเรา
ช่างพวกเขาทำได้ก็ช่างมัน

ADT มีตารางมีโค้ดให้
มานั่งไล่รันไปแสนสุขสันต์ (เหรอวะ?)
อีกนิยามมากหลายแสนสุดมัน
เชี่ยทั้งนั้นทำไม่ได้ซักข้อเลย!!!

สอบ Discrete มีไว้ให้พิสูจน์
นั่งหน้าบูดจับปากกาวางท่าเฉย
ก็มันทำไม่ได้เหมือนอย่างเคย
ซักข้อเลยช่างแม่งโยนปากกา

ทำไม่ได้แล้วทำไมต้องไปสน
เกิดเป็นคนสอบทีเหนื่อยเป็นหมา
สอบ Intro Elec กลุ้มแสนระอา
ปั่นแทบบ้าออกมา unknown บาน

Digital โหดร้ายทำลายหัว
เพราะเมามัวลอจิกหลายสถาน
อีกทั้งโจทย์ตัวแปรมโหฬาร
แก้กันนานเป็นชั่วโมงโง่จริงๆ
ลง Karnaugh เขียน MUX แล้วพักไว้
ทำยังไงก็ไม่ได้โจทย์ยากขิง
พอทำได้ก็ปั่นเป็นระวิง
เจอของจริงทำไม่ทันฉันเลยซวย

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

วันสุดท้ายวันอาทิตย์จิตเศร้าหมอง
คิดตริตรองลองทำอยู่สักครู่
ทำอย่างไรผลสุดท้ายไม่น่าดู
ตอบเป็นคู่บวกลบผิดหมดเลย
“แมท” ยังไงก็ทำไม่ได้หรอก
สุดช้ำชอกไม่น่าตรงเฉลย
คว้าดินสอวาด เป็ด แม่งซะเลย
ดีกว่าเฉยไม่ทำไรตายเปล่าฟรี

สรุปสอบหกวิชาช่างน่าเศร้า
สอบแล้วเราเกรดเน่าหมดศักดิ์ศรี
ดรอป ดีกว่า ดรอป เลย ดรอป ฟรีฟรี
เรียนอีกทีหวังว่าคงไม่เป็นไร
ฝากเป็นอุทธาหรณ์สอนให้คิด
ว่าชีวิตความแน่นอนหามีไม่
ถ้ามาเจอข้อสอบโหดบรรลัย
ทางสุดท้าย รีไทร์ ยังพอมี ฯ

Quote of the Day: “งูเหลือมงูเหลือมงูเหลือม งูเหลือมงูเหลือมงูเหลือม งูเหลือมงูเหลือมงูเหลือม งูเหลือมงูเหลือมงูเหลือม” ~ @jittat

[FAQ:CPE/V] BCD, Numeric data, etc.

Posted on June 30th, 2010 in article, CPE, CPE23/V | No Comments »

(ขอโทษเรื่อง theme ด้วยครับ เผอิญว่าเขียนที่มหาลัย ไม่ค่อยอยาก ftp ไปแก้เท่าไหร่)

เรื่องมันมีอยู่ว่า เพื่อนๆ หลายคนไม่ค่อยเข้าใจเรื่องตอนเรียน Digital กับ ADT เลยอยากไขข้อข้องใจให้ครับ

2′s Complement เป็นยังไงกันแน่ สำคัญอย่างไร

ก่อนอื่นเราก็ต้องบอกว่า มันเอาไว้แสดงเลขลบ เพราะว่าในระบบ CPU นั้น ทำได้แต่การบวก เวลาเราจะลบเลขเช่น x – y เลยต้องใช้การ “บวกด้วยเลขลบ” เช่น x + (-y) เป็นต้น

สำหรับการแปลงเลขใดๆ ในระบบเลขฐานสองด้วยวิธี 2′s Complement ก็ไม่ยากเลยครับ

  1. กลับ 0 เป็น 1 และกลับ 1 เป็น 0 ทุกตัว
  2. บวกค่าที่ได้ด้วย 1
 
7 = 00111 => 11000      //switch all bits
          => 11001 = -7 //add 1
 

สมมติว่าเรามีเลข 00111 (= 7) อยากแปลงเป็น -7 ก็ใช้การกลับ 0<->1 ทั้งหมดก่อน จะได้ 11000 เมื่อบวกอีก 1 ก็จะได้ 11001 = -7 ตามต้องการ

BCD เป็นยังไง ทำไมเวลาทดต้อง +6?

BCD ย่อมาจาก binary coded digit เป็นวิธีในการจัดตัวเลขฐานสิบให้เป็นฐานสองแบบรายหลัก จะได้เอาไปทำงานในแบบฐานสิบได้เลย เช่น การแสดงผลตัวเลขฐานสิบ เป็นต้น

สมมติว่า เรามีเลข 123 ถ้าแปลงเป็นฐานสองจะได้ 01111011 ซึ่งเราไม่สามารถแยกออกมาเป็นหลักๆ แบบฐานสิบให้เราเข้าใจได้ง่ายๆ เราก็เลยเปลี่ยนวิธีแปลง แทนที่เราจะแปลง 123 หมดเลยในทีเดียว เราก็แยกเป็นรายหลัก แล้วค่อยแปลง

 BCD(1 2 3) = 0001 0010 0011 //แปลงทีละหลัก
 

สำหรับคำถามที่ว่าทำไมต้อง +6 นั้น อยากให้ท่านลองพิจารณาเลขจำนวณ 09 + 01

 09    0000 1001
01+   0000 0001+
---------------
10    0000 1010 = 0A?!
 

นั่นแหละครับปัญหา เพราะ BCD นั้นมีได้แค่ในช่วง 0000-1001 หรือ 0-9 เท่านั้น เนื่องจากเราทราบว่า 1010, 1011, 1100, 1101, 1110, 1111 นั้นเป็น 6 ตัวที่ใช้ไม่ได้ เราจึงต้องบวกข้ามไปให้พ้น ดังนั้น เราจะพิจารณาตัวอย่างข้างต้นอีกรอบ

    09    0000 1001
   01    0000 0001
CARRY+   0000 0110+
------------------
   10    0001 0000 = 10
 

ทีนี้ก็ใช้ได้แล้วครับ :)

Overflow & Underflow Detection (signed int only)

Overflow คือการที่เลขบวกบวกกันแล้วได้เลขลบ ส่วน Underflow คือการที่เลขลบบวกกันแล้วได้เลขบวก หรือได้ค่าไม่ถูกต้อง นั่นคือ

 
calculating in 8 bits...
Overflow:          Underflow:
1111111            1 0000001           // CARRY ROW
01111111  = 127      10000001  = -127
00000001+ =   1+     10000001+ = -127
----------------   -----------
10000000  = -128?  1 00000010  =    2? //หลักซ้ายไม่คิดเพราะบิตเกิน (เราใช้แค่ 8 bits)
 

วิธี Detect แบบง่ายๆ ทำได้โดยตรวจบิตทดสุดท้ายกับบิตทดที่เกินมาว่าเป็นค่าเดียวกันหรือไม่ ถ้าใช่ก็คือเกิด overflow สามารถใช้ XOR ได้เลย

เท่านี้ก่อนนะครับ ไว้คราวหน้าถ้ามีใครฝากคำถามอะไรมาอีกจะช่วยตอบให้ครับ (หวังว่านี่คงไม่เข้าข่าย “ติว” นะ ไม่งั้นผมเอฟชัวร์ 555+)