`
lilisalo
  • 浏览: 1102108 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

十进制转换二进制(原码) 收藏
计算机是采用二进制存储的,计算机的二进制编码方式也分为原码,反码,补码方法。这是一个把十进制数字转换到它的二进制原码的算法,希望能给大家一些启发吧!这个算法我是用VB6写的,其中用到了函数递归调用和函数可选参数(个人感觉功能和C++中的函数重载差不多)。
--------------------------------------------------------------------------------
Option Explicit
Option Base 1

Dim S() As String * 1, i As Integer

Public Function BinaryConvertA(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),返回值为二进制的字符串形式.
'说明:本算法可以很容易的转换成除R取余,只要在函数中加个参数即可.另原码简介(引自程序员教程):设机器字长为n(即采用n个
' 二进制位表示数据),则最高位是符号位,0表示正号,1表示负号;其余的n-1位表示数值的绝对值。
'函数调用 二进制原码 = BinaryConvertA(十进制数,二进制字长)
'//*******************************************************************************************************************//

ReDim S(iLength) As String * 1
Dim sResult As String: i = 1: Dim j As Integer
If Abs(iNum) > 2 ^ (iLength - 1) Then
MsgBox "十进制数表示溢出", , "进制转换算法"
Exit Function
End If

'修正当十进制数为0的bug,但只处理了+0的问题,并没有特殊处理-0的问题,最好在调用函数之前进行一个判断
If CStr(iNum) = "0" Then
For j = 1 To iLength
sResult = sResult & 0
Next
BinaryConvertA = sResult: Exit Function

End If

If Abs(iNum) <> iNum Then
S(iLength) = 1
Else
S(iLength) = 0
End If

Call ConvertToBinary(Abs(iNum), i)

For j = i + 1 To iLength - 1
S(j) = 0
'Debug.Print j, S(j)
Next

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

End Function


Private Sub ConvertToBinary(ByVal iNums As Integer, ByVal iCount As Integer)
If iNums <> 1 Then
S(i) = iNums Mod 2
Debug.Print i, S(i)
i = i + 1
Call ConvertToBinary(iNums / 2, i)
Else
S(i) = 1

End If
End Sub

--------------------------------------------------------------------------------
函数调用范例:

新建一个工程,添加一个模块,将上面的代码复制到模块中,在窗体中添加一个textbox,三个command控件,自己调整位置。

然后将下面的代码复制到窗体的代码页中.

Private Sub Command1_Click()
Text1.Text = Text1.Text & BinaryConvertA(111) & vbCrLf

End Sub

Private Sub Command2_Click()
Text1.Text = Text1.Text & BinaryConvertA(-222, 9) & vbCrLf

End Sub

Private Sub Command3_Click()
Text1.Text = ""

End Sub

Private Sub Form_Load()
Text1.Text = ""
Command1.Caption = "第一种调用方式"
Command2.Caption = "第二种调用方式"
Command3.Caption = "&clear"
End Sub


--------------------------------------------------------------------------------

这样就实现了函数的调用,需要说的还有,我没有在函数中添加对调用参数类型的判断,这个判断应该加到调用函数前,比如说,如果你调用的参数来自一个文本框的文本。那么,你在调用函数前要先判断文本是否可以转换到一个integer类型的整数(cInt函数),可以采用IsNumeric 函数进行判断文本中的内容是否为数,具体实现过程就很简单了,在此就不多加解释了。我会在接下来的日子里写出反码和补码的代码,也有可能给出C++版的代码,如果对此有兴趣,请关注我的BLOG!Thank you~

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/0412Rainbow/archive/2005/05/03/371574.aspx

分享到:
评论

相关推荐

    原码补码转换的matlab程序

    将原码转换成补码,再将补码转成原码的matlab程序

    turn5_ASCII及进制转换器.rar

    turn5.exe是一款多功能的进制转换器,能够在十进制、8进制、十六进制和二进制之间进行互转。还可以转换字符串为十六进制、十六进制转字符串,用二进制表示原码、反码和补码。编码转换可以将字符转Base64,Base64转...

    循环移位补码.rar

    如果选择补码,则针对[a, b]区间内的每个数值n,将十进制变成二进制,计算补码(正数补码等于原码,负数补码等于反码+1),再将二进制结果转换成十进制,输出十进制结果。比如, 输入 起始数值:2 终止数值:4 选择...

    数制与编码.pptx

    不同数制间的相互转换:十进制转换为二进制、十进制转换成八进制、十进制转换成十六进制、非十进制数之间的相互转换 二进制逻辑运算 二进制数的四种表示形式:原码、补码、反码、移码 补码的加减法运算

    计算机基础知识点总结.pptx

    将信息输出 2、进制转换 二进制 八进制和十六进制:分别将二进制每三位和四位为单元,转换为八进制和十六进制; 八进制、十六进制 二进制:将每位转换为三位和四位二进制; 十进制 R进制: 整数部分使用除R取余法,...

    定点数机器码转换器(原码、反码、补码、移码)

    定点数机器码转换器。十进制输入示例:12345、0.12345、-12345、-0.12345;二进制输入示例:10101、0.10101、-10101、-0.10101,将定点数转换成机器码

    原码、反码、补码的总结

    数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学...

    yuchuangu85#Develop-Source#一文搞懂位运算、补码、反码、原码1

    上面的Demo中有“2”和“-2”,这是两个十进制数,并且是int类型的(java中占四个字节),位运算是基于二进制bit来的,所以我们需要将十进制转换为二进制

    计算机组成原理与汇编语言程序设计课后习题及解答(详解).doc

    将十进制数13/128转换为二进制数. 解: (13/128)10 =(1101/10000000)2 =(0.0001101)2 6.分别写出下列各二进制数的原码、补码,字长(含一位数符)为8位。 (1)0 (2)- 0 (3)0.1010 (4)- 0.1010 (5)1010 (6)-1010 解: ...

    计算机组成原理第一次作业答案.doc

    9. 若采用教材45页图2-5所求的IEEE754短浮点数格式,请将十进制数37.25写成浮点数,并写出其二进制代码序列,再转换成十六进制。 10. 若采用教材42页图2-4的浮点数格式,字长16位,含1位阶符,补码表示,以2为底;...

    计算机的基础知识.pptx

    2、数制的转换 (1.)二进制转换为十进制数 方法: 按权展开。 111.101B =1×22+1×2 1+1×2 0 +1× 2 -1 +0× 2 -2 +1× 2 –3 =4+2+1+0.5+0.125 =7.625D (2.)十进制数转换为二进制数 方法: 整数部分除二取余,...

    微型计算机原理及应用基本学习要求2018

    3、掌握二进制、十进制、十六进制数间的相互转换,要熟练掌握将8位二进制数转换为相应的十进制数,能熟练的将0~255范围内的十进制数转换为二进制数,能将十六进制数转换成二进制形式,能将二进制转换成十六进制表示...

    计算机基础习题集.doc

    正数二进制原码和补码相同 B. 所有的十进制小数都能准确地转换为有限的二进制小数 C. 汉字的计算机机内码就是国标码 D. 存储器具有记忆能力,其中的信息任何时候都不会丢失 5. 原码 -0的反码是 _____。 A. +0 B. -...

    [详细完整版]4单片机.doc

    C51单片机习题及答案 第一章 1-1选择 1.计算机中最常用的字符信息编码是( A ) A ASCII B ...十进制29的二进制表示为原码( C ) A 11100010 B 10101111 C 00011101 D 00001111 9. 十进制0.625转换成二进制数是( A )

    微机学习要求答案

    3、掌握二进制、十进制、十六进制数间的相互转换,要熟练掌握将8位二进制数转换为相应的十进制数,能熟练的将0~255范围内的十进制数转换为二进制数,能将十六进制数转换成二进制形式,能将二进制转换成十六进制表示...

    逻辑与计算机设计基础学习复习要点

    浙江大学 逻辑与计算机设计基础 学习复习要点 共9章,分列了要点。 第一章 数字计算机与信息 1. 数字系统:数字信号,...十进制数的二进制编码:BCD码 字符编码:ASCII 5. 各种信息的编码 第二章 组合逻辑电路 。。。

    2020年6月考试内容by秦兴1

    考试内容十进制、二进制和16进制数制转换补码、原码和反码表示,及补码计算地址计算,例如:MOV BX, [1289H], (DS)=700H,请问BX里存放的是

    软考程序员考试提纲(考试内容-要求)

    二进制、十进制和十六进制等常用数制及其相互转换(欢迎访问软件考试网www.hbsoft.net) 1.2数据的表示(欢迎访问软件考试网www.hbsoft.net) 数的表示(原码、反码、补码表示,整数和实数的机内表示方法,精度和溢出)...

    网络管理员的一些重要内容

    (1)数制及转换:包括二进制、十进制和十六进制等常用数制及其相互转换。 (2)数据的表示:包括数的表示(原码、反码、补码表示,整数和实数的机内表示)、非数值表示(字符和汉字表示、声音表示、图像表示)、...

Global site tag (gtag.js) - Google Analytics