Private Sub Form_Load()
' การแปลงเลขฐาน 10 (ค่า 127) ให้มีขนาดจำนวน 16 บิต
Text1.Text = Decimal2BinaryFix(127, 16)
End Sub
' Optional หมายถึง หากไม่ส่งค่าใดๆมาฟังค์ชั่น ให้ยึดค่าที่กำหนดไว้ หรือ 8 เป็นค่าเริ่มต้นเสมอ
Function Decimal2BinaryFix(Dec As Integer, Optional NumBit As Byte = 8)
' เก็บค่าคำตอบของการหารเอาเศษ (MOD)
' อันนี้แล้วไม่จำเป็นต้องใช้ก็ได้ ให้เอาชื่อฟังค์ชั่นตัวมันเองมาเก็บเป็นคำตอบแทนน่ะครับ
Dim Bit As String
Dim i As Byte ' นับจำนวนบิต ... BYTE มีค่าเท่ากับ 0 - 255 น่ะครับ ... พี่น้อง
' ==============================================================
' FOR ... NEXT
' เนื่องจากลูป For อาศัยการการนับเป็นเงื่อนไข มีค่าเริ่มต้น - สิ้นสุด และ Step ในการนับ
' ดังนั้นเราสามารถกำหนดจำนวนบิตที่ต้องการ เพื่อนำมาทำเป็นเงื่อนไขได้โดยตรง
For i = 1 To NumBit
Bit = (Dec Mod 2) & Bit
Dec = Dec \ 2
Next
' คำตอบที่ส่งกลับไปสำหรับคำสั่งวนรอบด้วย FOR ... อาศัยจำนวนบิตเป็นเงื่อนไข (NumBit) แทน
Decimal2BinaryFix = Bit
End Function
แม้ว่ามันจะเกิดการแปลงเลขฐานเสร็จไปเรียบร้อยแล้ว แต่ลูป Forจะยังคงทำงานต่อไปอย่างต่อเนื่องจนกว่าจะนับจำนวนบิตครบหมด (i นับได้เท่ากับ NumBit) หลังจากนั้นเราก็สามารถจะนำไปใช้ในการแปลงจากเลขฐาน 2 ไปเป็นฐาน 16 ได้อย่างไม่ยากเย็นนักเลยครับ ... พี่น้อง (แบะๆ ... ไว้ให้ก่อน ใช้ For และ Select Case ต่อได้เลย) |