电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> VB编程>>VB在十进制和二进制间转换数字:

VB在十进制和二进制间转换数字

来源:www.cncfan.com | 2006-12-16 | (有11125人读过)

虽然电脑内部是采用二进制进行运算,但广大程序员一般都会以十进制或者十六进制数据进行开发。不过有时候知道数据的二进制形式还是非常有用的,尤其是在进行逻辑运算或按位运算时,进行二进制转换就更加重要了。本文会介绍如何将一个十进制整数转换成二进制,然后再将其转换为十进制。

将数据转换为二进制其实非常简单,只要按照以下步骤进行即可(X为十进制整数):

1.       对X进行模2运算。结果非0既1。这就是第一位(最右端)二进制数。

2.       将X 除以2,并丢弃余数(也就是用“\”进行整数除法)。

3.       如果上一步结果为0,则结束转换,否则从第一步起继续进行转换。

如果你还不懂,我们举个例子。假设我们要将13转换为二进制形式(记住,转换是从右到左进行的)

1.       13 模2等于1,因此第一位(最右边)二进制代码为1。

2.       13 \ 2等于 6。

3.       6 模2等于 0,因此第二位二进制代码为0。

4.       6 \ 2 等于3。

5.       3 模2 等于1,因此第三位二进制代码为1。

6.       3 \ 2 等于1.

7.       1 模2 等于 1,因此第四位二进制代码为1。

8.       1 \ 2 等于0,这表示转换结束。从右到左排列一下上面的结果,就会得出13的二进制数是1101。

以下VB函数

以下VB函数可以完成十进制转换二进制的工作。另外,这个函数还加入了对二进制长度的判断,如果转换出来的二进制长度低于最小值,函数会自动在二进制字符串前补0。

Public Function DecimalToBinary(DecimalValue As Long, MinimumDigits As Integer)
As String

' Returns a string containing the binary
' representation of a positive integer.

Dim result As String
Dim ExtraDigitsNeeded As Integer

' Make sure value is not negative.
DecimalValue = Abs(DecimalValue)

' Construct the binary value.
Do
    result = CStr(DecimalValue Mod 2) & result
    DecimalValue = DecimalValue \ 2
Loop While DecimalValue > 0

' Add leading zeros if needed.

ExtraDigitsNeeded = MinimumDigits - Len(result)
If ExtraDigitsNeeded > 0 Then
    result = String(ExtraDigitsNeeded, "0") & result
End If

DecimalToBinary = result

End Function

将二进制转换为十进制

将二进制转换为十进制的过程就是上述过程的逆过程。每一位二进制数都要乘以2的指数,从2的0次幂开始(最右边)乘,第二位是乘以2的1次幂,以此类推。需要注意的是,任何数的0次幂都是1,而任何数的1次幂都是它本身。以下以1101为例进行说明:

1.       第一位是1,1乘以2的0次幂等于1。

2.       第二位是0,0乘以2的1次幂等于0。

3.       第三位是1,1乘以2的2次幂等于4。

4.       第四位是1,1乘以2的3次幂等于8。

5.       8 + 4 + 1 等于13.

以下代码完成二进制到十进制的转换:

Public Function BinaryToDecimal(BinaryValue As String) As Long

' Returns the decimal equivalent of a binary number.

Dim idx As Integer
Dim tmp As String
Dim result As Long
Dim digits As Integer

digits = Len(BinaryValue)
For idx = digits To 1 Step -1
    tmp = Mid(BinaryValue, idx, 1)
    If tmp = "1" Then result = result + 2 ^ (digits - idx)
Next

BinaryToDecimal = result

End Function

本函数会将非1的任何数字当做0。你可以在代码中加入对数字的检验,以确保给定的二进制字符串中只有0和1。

VB编程热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号