十进制转换二进制(反码)

本文介绍了一段VB6代码,用于将十进制数转换为二进制反码,该代码需转换原码函数支持。作者对代码结构进行优化,使其更具逻辑性和可维护性。同时,指出原码转换中存在的BUG,即十进制数为0时的符号处理问题,并探讨了相应解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  这是段把十进制数转换为二进制反码的VB6代码,这段代码需要转换为原码函数(BinaryConvertA)的支持,开始的时候,我把它写成一个了独立的函数,但最后还是改到了现在这个样子,感觉如果转换原码代码部分有错误,可以把错误的代码改了就可以了,这样的代码逻辑性更好,也容易维护,出现代码不同步的可能性低,降低了代码的调试难度。同时,发现了在原码转换中的一个BUG,就是当十进制数为0的时候,我已经对前一篇文章进行了修改,但关于+0和-0的问题,还是没有处理好。我是写了一个都处理的版本,但因为传递的是数字,所以VB是不传符号的,所以-0传过去也会被当成+0处理。所以如果要在函数内完成,就必须传字符串,但函数内有数的比较运算,如果传字符串,就必须在函数中将字符串转成integer,比较麻烦(也增加了些不必要的运算,因为很多时候并不是-0,但却必须要进行cint(inum)运算),所以,我想把判断放在调用函数前会比较好!下面就是十进制转换到二进制反码的代码:


Public Function BinaryConvertB(ByVal iNum As Integer, Optional ByVal iLength As Integer = 8) As String
'//***************************************  Design By 0412Rainbow  **********************************************//
'功能:用于将一个十进制数转换为二进制反码,iNum为所要转换的十进制数,iLength为机器字长(即二进制数的位数),可选,默认传递
'     值为8,iNum的转换范围-2^(n-1) 到 +2^(n-1),返回值为二进制的字符串形式.
'说明:反码简介(引自程序员教程):设机器字长为n,则最高位是符号位,0表示正号,1表示负号;正数的反码与原码相同,负数的反码
'     则是其绝对值按位取反。
'函数调用 二进制反码 = BinaryConvertB(十进制数,二进制字长)
'//**************************************************************************************************************//
ReDim S(iLength) As String * 1
Dim sResult As String, tempResult As String, j As Integer
tempResult = BinaryConvertA(iNum, iLength)
For j = 1 To iLength
    S(j) = Mid(tempResult, iLength - j + 1, 1)
   
Next

If Abs(iNum) <> iNum Then
    For j = 1 To iLength - 1
        If S(j) = 0 Then
            S(j) = 1
        Else
            S(j) = 0
        End If
    Next
   
End If


For i = iLength To 1 Step -1
    sResult = sResult & S(i)
    'Debug.Print sResult
Next
BinaryConvertB = sResult


End Function


函数调用举例只要参见转换原码的示例就好了.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值