【加试题】在计算机系统中,数值一般用补码来表示和存储,补码由符号位和数值位两部分组成,符号位用0表示正数,用1表示负数。例如,整数n(-128≤n≤127)用8位二进制补码的表示方法为:
![](http://tikupic.21cnjy.com/00/05/0005f14d0fd300b441cf1a5392cbcac6.jpg)
①数:正整数补码的数值即其二进制表示。
例:12的8位二进制表示00001100,最高位即符号位“0”表示正数。
②数:除符号位外,所有位取反,然后+1。
例:-5的8位二进制补码表示方法如下,5对应7位二进制数为0000101(原码),所有位取反后为1111010(反码),再加1后为1111011(补码),再设置符号位为1,因此-5用8位二进制补码表示为11111011。
小明设计了一个VB程序,点击“补码”按钮Command1,将文本框Text1中输入的整数n(-128≤n≤127)转换成相应的补码,并在文本框Text2中输出,程序运行界面如图所示,请将画线处的代码补充完整。
![](http://tikupic.21cnjy.com/85/19/8519661ed98608afced8545363c23cc3.jpg)
Private Sub Command1_Click()
Dim n As Integer,a As Integer,i As Integer
Dim m(1 To 8)As Integer
Text2.Text=" "
n=Val(Text1.Text)
If n>=0 Then
‘计算二进制原码
For i=8 To 2 Step-1
m(i)一n Mod 2
n=n\2
Next i
‘设置符号位
m(1)=0
Else
n=-n
‘计算二进制反码
For i==8 To 2 Step-1
m(i)= ①
n=n\2
Next i
‘加1计算
i=8
Do While m(i)=1
②
i=i-1
Loop
m(i)=1
‘设置符号位
m(1)=1
EndIf
‘输出结果
For i=1 To 8
Text2.Text=Text2.Text & m(i)
Next i
End Sub