2013-11-27 74 views

回答

0

您可以簡單地將字節與255異或,然後添加一個。

Dim myByte1 As Byte = 5 
Dim myByte2 As Byte = 255 
Dim MyTwosComplement As Byte 

MyTwosComplement = myByte1 Xor myByte2 
MyTwosComplement = CByte(MyTwosComplement + 1) 
+0

,這不符合選項嚴格工作。 –

+0

最後一行中的CByte將使用Option Strict修復它。 (編輯答案) – xpda

+0

我希望Killakeys能解決它......但無論如何,這對'myByte1 = 0'不起作用。 –

1

您可以將字節轉換爲負值(可以將其轉換爲整數後):

b = CByte(-CSHort(b) And &HFF) 
0

您可以用其他的定義爲補:2^n - b其中n是比特數。

Function TwosComplement(b As Byte) As Byte 
    Return CByte((256 - b) And &HFF) 
End Function 
0

如何

Dim b as Byte = 5 
Dim twosCompliment As Byte = (Not b) + 1 
+0

這不能用Option Strict On進行編譯,並且在'b = 0'時不起作用。 –

0
Option Explicit On 
Option Strict On 

... 

Public Function TwosComplement(value As Byte) As Byte 
    If value = 0 Then Return 0 Else Return CByte(CByte(value Xor Byte.MaxValue) + 1) 
End Function