29 April 2011

The Modulo 11 Checksum Algorithm

     วันนี้เปลี่ยวใจ อยากไปกินตับๆ แต่เอาไว้ก่อน นะครับ ขยันหมั่นเพียร เรียนก่อน หาอะไร ต่อมิอะไรใส่หัวก่อน เตรียมตัว เป็น IT Experience. ก่อน 5555++ (หัวเราะอย่างคนมีความรู้น้อย!!)

     เหตุที่เขียน บทความนี้ ไม่มีไร ว่างจัด!! อีกแหละ ตามประสาเด็กวัยเกรียน !! นะ..... ไม่ต้องคิดไรมาก มีเวลาก็เขียน อารายๆๆ เรื่อยๆ เปื่อยๆ ไปวันๆๆ ครับ

      ความรู้ในเรื่องนี้ ผมเคยนำไปเขียนด้วยภาษา C มาแล้ว ตอนปี 1 เลยอยากทบทวบความจำซะหน่อยเรื่องที่ว่าคือ Modulo 11 หรือเรียกสั้นๆว่า Mod11 นั้นเอง ..... (คนไอที น่าจะรู้นะครับว่า mod คืออะไร มันก็คือการหารเอาเศษเหลือนั้นเอง ครับ!! ^^)   มาดูภาษาปะกิตก่อน นะ (คลิกรูปครับ!!)




         จากรูปคงเข้าใจกันดีอยู่แล้ว (สมมุติว่านักศึกษาเข้าใจ นะ....!! ) คำนี้คุ้นๆๆ กันไหม ครับ ชาวไอที ผมเป็นคนหนึ่งที่ ฟังคำนี้มาตั้งแต่ ปี1 ยันจะปี 4 แหละ T_____T ไม่ไหวจะ Clear จริงๆๆ (สำเนียงสุพรรณ 55+)  เคยถามบ้างไหม ว่า พวกกระผม เข้าใจจริงๆๆ หรอเปล่า 555+  ทุกคนจะตอบว่า ไม่  จริงไหม??

OK!!! ถ้าไม่เข้าใจดูต่อไปนี้ครับ ---V-----

ขั้นตอนในการคำนวณ The Modulo 11 Checksum Algorithm

         1. หา ผลรวมของผลคูณของตัวเลขหลักที่ 1-12 กับค่าคงที่  แล้วเก็บไว้ที่ในใจ เก็บในใจไม่ได้ก็
             เก็บไว้ในตัวแปร Sum ครับ โดย :
          
             Sum=(หลักที่ 1*13)+(หลักที่ 2*12)+(หลักที่ 3*11)+(หลักที่ 4*10)+(หลักที่ 5*9)+
                      (หลักที่ 6*8)+(หลักที่ 7*7)+(หลักที่ 8*6)+(หลักที่ 9*5)+(หลักที่ 10*4)+
                      (หลักที่ 11*3)+(หลักที่ 12*2)

         2.  นำ Sum หารด้วย 11  แล้วเก็บเศษไว้ที่ r

         3.  Check Digit  โดยนำ 11-r

              เมื่อได้ค่า Check Digit ซึ่งจะเป็นค่าที่ตรงกับ หลักที่ 13 ครับ สามารถตรวจสอบได้จากตรงนี้

        หมายเหตุ : ถ้ากรณีที่ คำนวณแล้วได้ค่า Check Digit  เท่ากับ 11 หรือ 10 ให้ยึดเอาหลักหน่วยของเลขที่ได้เป็นคำตอบครับ เช่น  11 คือ 1 และ 10 คือ 0 นั้นเองครับ เพราะว่า หลักที่ 13 เป็นช่วงที่เป็นเลข (0-9)

ไม่อยากบอกเลยครับ ว่ามันคือ Algorithm ที่ใช้ในการตรวจสอบเลขบัตรประชาชน ของพวกเรานั้นเอง :D