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

原创 2005年05月04日 19:38:00

  这是段把十进制数转换为二进制反码的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


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

2---MATLAB将十进制转换成二进制补码

MATLAB中提供了一个将十进制转换为二进制的函数dec2bin,但是该函数只能接受大于0的数,也就是不能直接将负数转换为二进制补码。那如何在MATLAB中生成补码呢?我们都知道负数的补码为其反码加1...
  • qq_16923717
  • qq_16923717
  • 2017年09月25日 10:37
  • 488

十进制和二进制的转化;原码、反码和补码

因为数在计算机中是以二进制的形式表示的,并且在其最高位是其符号位,如六位整数000001=1,而100001=-1; 原码:原码就是这个数的二进制形式;正数的补码和反码和原码相同,而负数的反码为原码...
  • qq_27010255
  • qq_27010255
  • 2016年09月09日 23:49
  • 168

二进制、八进制、十六进制,原码,反码,补码

第六章 二进制、八进制、十六进制6.1 为什么需要八进制和十六进制?6.2 二、八、十六进制数转换到十进制数  6.2.1 二进制数转换为十进制数  6.2.2 八进制数转换为十进制数  6.2.3 ...
  • yilin54
  • yilin54
  • 2008年02月02日 15:53
  • 3223

快速 二进制,八进制,十进制,十二进制转换 .源码,反码,补码,

二进制和十进制互转,最常用方法. 源码.反码,补码如图:...
  • qicong4022
  • qicong4022
  • 2017年09月14日 16:39
  • 105

二进制反码运算

最近在看计算机网络的相关知识,看到了运输层相关的知识,看到UDP检验和然而却看不懂什么意思!所以只好百度一下二进制 反码运算究竟是如何运算。 首先在计算机中所有的数据都是以二进制的形式存储的,正数和负...
  • dream_follower
  • dream_follower
  • 2016年10月13日 22:13
  • 2465

二进制(原码、反码、补码)

二进制(原码、反码、补码)
  • dabing69221
  • dabing69221
  • 2013年12月15日 20:55
  • 5263

c十进制转化二进制(递归)

#include void zhuanhuan(int i){ int b; b = i%2; if(i
  • yuanhangLVli
  • yuanhangLVli
  • 2016年10月11日 11:32
  • 1150

二进制和十进制之间的相互转换

上一篇中我们说过js的一个关于计算的奇葩问题,比如0.1+0.7居然不等于0.8,今天就来刨根挖底的解剖为什么会出现这样的问题,简单的讲就是因为计算机识别的是二进制语言,而我们常用的是十进制,十进制转...
  • maoguiyou
  • maoguiyou
  • 2016年01月05日 11:51
  • 1483

二进制和十进制之间的转换

》正十进制整数转换成二进制数      #除二取余,然后倒序排列,高位补零      #高位补零:计算机内部表示数的字节单位是定长的,如8位,16位,或32位。位数不够时,高位补零,正数高位补0,负数...
  • darkxiaoming
  • darkxiaoming
  • 2017年05月21日 19:07
  • 447

十进制的正整数,负数, 小数转为二进制.八进制.十六进制的方法 包括原码,反码,补码的介绍

对于初学者,迟早要面对进制的转换,或许
  • u014492257
  • u014492257
  • 2014年09月14日 17:23
  • 2587
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:十进制转换二进制(反码)
举报原因:
原因补充:

(最多只允许输入30个字)