2の補数

2の補数とはコンピュータで負の数をあらわす方法の1つです。
例えば-5なら
5は
00000101
です。
ビットを全てひっくり返して
11111010
これに1を足して
11111011
これが2の補数表現の-5です。
実際に確認してみましょう。
'b.abp
#console
#include<vcrt71.sbp>

Dim i As Char
Dim j As Long

'xのiビットを調べる。
Function GetBit(x As Long ,i As Long ) As Long
    GetBit = (x And 1<<i)
    If GetBit Then GetBit = 1 Else GetBit=0
End Function

For i=-10 To 10
    printf(Ex"%3d:" , i)
    For j=7 To 0 Step -1
        printf("%d" , GetBit(i,j))
    Next
    printf(Ex"\n")
Next
実行結果は以下のようになります。
-10から10の、2の補数一覧
これを見れば分かりますが、マイナスの時は、最上位ビットは必ず1になります。
2の補数を使うと、引き算を足し算で行うことができます。
8ビットの場合9ビット目は無視されます。
例)4-5
   4 : 00000100
+)-5 : 11111011
--------------
  -1 : 11111111
例)3-7
   3 : 00000011
+)-7 : 11111001
--------------
  -4 : 11111100
以上のようになります。