你的问题是:位数不确定。如字节型的,其前面的零要不要取反。若也要取反。则,不用转成二进制,直接用一个 Not 就行了。 dim a as byte a = not(5) '5 ---00000101 print a '154 ---11111010
若指定为4位,就行你的例子:0101转成1010,则用掩码去掉前面的数就行了。 dim a as byte a = not(5) '5 ---00000101 4位:0101 a = a and 15 '15 ---00001111 print a '10 ---00001010 4位:1010
如果 a和b都是Byte型:b=Not(5) And CByte(&HF)
Private Sub Command1_Click() Text2.Text = "" Dim a As String For i = Len(Text1.Text) To 1 Step -1 a = Mid$(Text1.Text, i, 1) Text2.Text = Text2.Text + a Next End Sub
a = "0101" b = test(a) msgbox bprivate function test(a as string) as stirng dim i as long for i = 1 to len(a) mid(a,i,1)= iif(mid(a,i,1)="0","1","0") next i end function
dim a as byte
a = not(5) '5 ---00000101
print a '154 ---11111010
dim a as byte
a = not(5) '5 ---00000101 4位:0101
a = a and 15 '15 ---00001111
print a '10 ---00001010 4位:1010
Text2.Text = ""
Dim a As String
For i = Len(Text1.Text) To 1 Step -1
a = Mid$(Text1.Text, i, 1)
Text2.Text = Text2.Text + a
Next
End Sub
b = test(a)
msgbox bprivate function test(a as string) as stirng
dim i as long
for i = 1 to len(a)
mid(a,i,1)= iif(mid(a,i,1)="0","1","0")
next i
end function