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

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 1 2 8 4 7 4

7 ธันวาคม พ.ศ.2549
256 Users On-Line.
Visitors - Page views
 8 4 2 4 5 2 2
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

วิธีการคิดกับตัวเลขจำนวนเต็ม

Category »  จับฉ่ายคอมพิวเตอร์
โดย : Webmaster เมื่อ 30/11/2550 0:01:00
(อ่าน : 23669) 
พี่น้องครับ ... เรื่องของ "ชนิดข้อมูล - 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 เจอ มันไม่ได้ง่ายดายเช่นนี้น่ะครับ ... พี่น้อง


จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
Email: [email protected] หรือ โทร. 08-6862-6560