vb.net计算补码 vb计算器代码详解

vb 十进制转换成 八进制 二进制原码 二进制补码 二进制反码 程序

VB.NET控制台程序:

雁塔网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联公司自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

Module module3

Sub Main()

Dim i As Integer

Dim num As Integer = -35

Dim R As Integer = 8

Dim arr(33) As Integer

Dim len As Integer

arr = TransToR(num, R)

len = arr(0)

Console.Write(num " 转换成 " R " 进制后:" vbTab)

If (arr(1) = 1) Then

Console.Write("-")

End If

For i = len + 1 To 2 Step -1

Console.Write(arr(i))

Next

Console.WriteLine()

arr = TransToSourceCode(num)

Console.Write(num " 转换成32位二进制源码后:" vbTab)

Console.Write(arr(1))

For i = 32 To 2 Step -1

Console.Write(arr(i))

Next

Console.WriteLine()

arr = TransToReverseCode(num)

Console.Write(num " 转换成32位二进制反码后:" vbTab)

Console.Write(arr(1))

For i = 32 To 2 Step -1

Console.Write(arr(i))

Next

Console.WriteLine()

arr = TransToCompensatoryCode(num)

Console.Write(num " 转换成32位二进制补码后:" vbTab)

Console.Write(arr(1))

For i = 32 To 2 Step -1

Console.Write(arr(i))

Next

Console.WriteLine()

End Sub

'将十进制数num转换为R(2=R=9)进制数,结果存在arr数组中

'arr(0)存储长度, arr(1)存储符号位:1为负,0为正

Function TransToR(ByVal num As Integer, ByVal R As Integer) As Integer()

Dim arr(33) As Integer

arr(0) = 0 '初始长度

'设置符号位

If (num 0) Then

arr(1) = 1

Else

arr(1) = 0

End If

num = Math.Abs(num)

While num 0

arr(0) = arr(0) + 1

arr(arr(0) + 1) = num Mod R

num \= R

End While

Return arr

End Function

'将十进制数num转换为二进制原码

Function TransToSourceCode(ByVal num As Integer) As Integer()

Dim arr(33) As Integer

Dim i As Integer

arr = TransToR(num, 2)

'高位补零

For i = arr(0) + 2 To 32

arr(i) = 0

Next

arr(0) = 32

Return arr

End Function

'将十进制数num转换为二进制反码

Function TransToReverseCode(ByVal num As Integer) As Integer()

Dim arr(33) As Integer

Dim i As Integer

arr = TransToSourceCode(num)

If num = 0 Then

Return arr

End If

'除符号位外各位取反

For i = 2 To 33

arr(i) = 1 - arr(i)

Next

Return arr

End Function

'将十进制数num转换为二进制补码

Function TransToCompensatoryCode(ByVal num As Integer) As Integer()

Dim arr(33) As Integer

Dim i As Integer

Dim c As Integer = 0 '进位

arr = TransToReverseCode(num)

If num = 0 Then

Return arr

End If

'末尾加1

i = 2

arr(i) += 1

Do While True

arr(i) = c + arr(i)

c = arr(i) \ 2

arr(i) = arr(i) Mod 2

i += 1

If c 1 Then

Exit Do

End If

Loop

Return arr

End Function

End Module

vb.net的问题,求回复

Not一个数值实际上是对这个数值进行“非”运算,即转换为2进制,0变为1,1变为0,你可以这样试:

For i = 1 To 10

s = i

debug.print not (i Mod 5 )

Next

这样可以看到not (i Mod 5 )这个表达式究竟等于多少。

按照你的想法,应该这样做结果才是对的:

If Not (i Mod 5 0) Then

我在用VB.net做一个计算程序,遇到一个问题。一个数15563,需要取出万位和千位(1500)

dim a as integer

a=15563

万位=a\10000

千位=a\1000 mod 10

百位=a\100 mod 10

if a mod 105 then 百位+=1

VB.NET怎么位运算?

注意只能对整型执行按位运算。浮点值必须转换为整型后,才能执行按位运算。按位运算采用二进制(以 2 为基)形式计算两个整数值。它们比较对应位置上的位,然后基于比较的结果赋值。下面的示例演示了 And 运算符。复制Dim x As Integerx = 3 And 5 前面的示例将 x 的值设置为 1。发生这种情况的原因如下:这些值以二进制形式处理:二进制格式的 3 为 011二进制格式的 5 为 101And 运算符比较这些二进制表示方式,一次比较一个二进制位置(位)。如果给定位置的两个位都为 1,则将 1 放在结果中的该位置。如果任何一个位是 0,则将 0 放在结果中的该位置。在前面的示例中,按如下所示计算结果:011(二进制格式的 3)101(二进制格式的 5)001(二进制格式的计算结果)计算结果以十进制形式处理。值 001 是 1 的二进制表示形式,因此 x = 1。除了在任何一个比较位是 1 或两个比较位都是 1 的情况下将 1 赋予结果位以外,按位 Or 运算与此类似。Xor 在比较的位正好只有一个是 1(而不是两者都是 1)时将 1 赋给结果位。Not 采用单个操作数并反转所有位(包括符号位),然后将该值赋予结果。这意味着,对于有符号正数,Not 始终返回负值,而对于负数,Not 始终返回正值或零。AndAlso 和OrElse 运算符不支持按位运算。 追问: 好复杂啊...还是不会,还有整数怎么转换为二进制数? 回答: 为什么一定要用位运算呢,你那个乘法只能通过左移操作符“ ”来进行,而左移一次代表乘以2,要是乘以一个小数,就必须先化成2的n次方,不够再用加减法调整,很麻烦啊,没必要用位运算啊。。。 追问: 因为我要进行大量的运算,但速度要快,所有用位运算...我也不想啊.. 回答: 那就不该用VB 啊,c/c++在执行效率上是没话说的。 追问: 问题就是不会嘛... 回答: 那你上csdn上发帖效果应该不错 追问: CSDN发了,我发在高性能运算,没人... 回答: 耐心一些,或者你应该发到VB.NET论坛那里。。。 追问: 额..只能这样了... 提问者 的感言: 太复杂了..算了 2010-11-08


本文标题:vb.net计算补码 vb计算器代码详解
当前路径:http://scyanting.com/article/hieeoh.html