如何将十进制转换位二进制?

global_boy 2003-11-12 06:55:50
如何将十进制转换位二进制?

在MS QBASIC环境下,请给个sample code.3q
...全文
259 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2004-01-21
  • 打赏
  • 举报
回复

我刚刚正好写了一个


Public Function Bin(ByVal Data As Long, Optional ByVal Size As Long = -1) As String
Dim Sign As Boolean
Dim TempStr As String

Sign = Data And &H80000000
Data = Data And &H7FFFFFFF
Do While Data
TempStr = (Data And 1) & TempStr
Data = Data \ 2
Loop
If Len(TempStr) = 0 Then TempStr = "0"
If Sign Then
TempStr = "1" & String(32 - Len(TempStr) - 1, "0") & TempStr
End If

If Size > Len(TempStr) Then TempStr = String(Size - Len(TempStr), "0") & TempStr
'Debug.Print TempStr

Bin = TempStr

End Function

xxlroad 2004-01-21
  • 打赏
  • 举报
回复
拷别人的代码
Private Sub Command1_Click()

Print tento(17, 2) '10001

End Sub

'************************辅助函数,可以从十进制转换到任意进制**********************

'//入口为十进制数,要转换的进制,返回为该进制数

Public Function tento(m As Integer, n As Integer) As String

Dim q As Integer

Dim r As Integer

tento = ""

Dim bStr As String

Do

Call myDivide(m, n, q, r)

If r > 9 Then

bStr = Chr(55 + r)

Else

bStr = Str(r)

End If

tento = Trim(bStr) & tento

m = q

Loop While q <> 0

End Function



'************************辅助过程,得到任意两个数的商和余数***************************

Public Sub myDivide(num1 As Integer, num2 As Integer, q As Integer, r As Integer)

If num2 = 0 Then

MsgBox ("非法除数")

Exit Sub

End If

If num1 / num2 >= 0 Then

q = Int(num1 / num2)

Else

q = Int(num1 / num2) + 1

End If

r = num1 Mod num2

End Sub


northwolves 2004-01-21
  • 打赏
  • 举报
回复
Function dectoBin(X As Long) As String
Const Bins = "0000000100100011010001010110011110001001101010111100110111101111"
Dim i As Integer, s() As String, y As String
y = Hex(X)
ReDim s(1 To Len(y))
For i = 1 To Len(y)
s(i) = Mid(Bins, (Val("&h" + Mid(y, i, 1)) * 4 + 1), 4)
Next
s(1) = Format(s(1), "0")
dectoBin = Join(s, "")
Erase s
End Function
华芸智森 2004-01-21
  • 打赏
  • 举报
回复
好象随便一本关于算法结构的书都有吧.
楼上的方法均对.
SimonSui 2004-01-21
  • 打赏
  • 举报
回复
短除法除2余数记下,然后把得到的余数列倒着写出来就是了
kmzs 2004-01-21
  • 打赏
  • 举报
回复
同上
mmcgzs 2004-01-16
  • 打赏
  • 举报
回复
Private Function TenturnTwo(ByVal varNum As Long) As String
Dim returnString As String
Dim ModNum As Integer
Do While varNum > 0
ModNum = varNum Mod 2
varNum = varNum \ 2
returnString = Trim(Str(ModNum)) + returnString
Loop
TenturnTwo = returnString
End Function
Private Function TwoturnTen(ByVal varString As String) As Long
Dim Slen As Long
Dim I As Long
Dim returnNum As Long
Slen = Len(varString)
For I = 0 To Slen - 1
returnNum = returnNum + Val(Mid(varString, I + 1, 1)) * (2 ^ (Slen - I - 1))
Next
TwoturnTen = returnNum
End Function
mmcgzs 2004-01-16
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2589/2589660.xml?temp=.7058985
flc 2004-01-16
  • 打赏
  • 举报
回复
Public Function conform(ByVal temp As Long) As String
Dim j As Long
Dim s As String
Dim binstr As String
Do While 2 ^ j <= temp
If (temp And 2 ^ j) = 2 ^ j Then
s = "1"
Else
s = "0"
End If
binstr = s + binstr
j = j + 1
Loop
conform = binstr
End Function
Neoking 2003-11-12
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
stoe (10)
End Sub

Sub stoe(nos As Integer)
Dim x As Integer


Do While (nos <> 1)
x = nos Mod 2
nos = (nos - x) / 2
Print x
Loop
Print "1" '因为在上面停止了没有把最后的1显示出来
End Sub
maltt521 2003-11-12
  • 打赏
  • 举报
回复
将十进制转换为二进制你就用十进制的数除以二一直商到零为止,这样就可以了.
global_boy 2003-11-12
  • 打赏
  • 举报
回复
如何将十进制转换为二进制?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧