# Système négabinaire

En mathématiques, le système négabinaire (base –2) est un système de numération positionnel non standard utilisé dans l'ordinateur expérimental polonais BINEG, construit en 1957-59. Il possède la propriété inhabituelle d'avoir les nombres négatifs et positifs représentés sans un bit de signe, bien que les opérations arithmétiques soient plus compliquées.

## Histoire

Les bases numériques négatives ont été découvertes par Vittorio Grünwald (en) dans son travail Giornale di Matematiche di Battaglini, publié en 1885. Grünwald donna des algorithmes pour exécuter les additions, les soustractions, les multiplications, les divisions, les extractions de racines, les tests de divisibilité et les conversions de bases. Les bases négatives furent redécouvertes indépendamment plus tard par Aubrey J. Kempner (en) en 1936 et Zdzisław Pawlak (en) et A. Wakulicz en 1959.

## Écrire des nombres en négabinaire

Tout entier relatif peut être écrit de manière unique sous la forme
    $\sum _{k=0}^{n}d_{k}(-2)^{k}$
où chaque chiffre d$_k$ est soit 0 ou 1 et le « bit conducteur » d$_n$ est 1 (à moins que n = 0). Le développement négabinaire d'un entier donné est alors donné par la chaîne :
    $d_{n};d_{n-1}...d_{1}d_{0}.$
Quelques nombres négabinaires ont la même représentation en système binaire. Par exemple,
    $17=2^{4}+2^{0}$
est représenté par 10001 en binaire et 10001 en négabinaire.
Les nombres allant de –5 à 6 avec leurs développements négabinaires sont :
Le développement négabinaire d'un nombre peut être trouvé avec une division répétée par –2, en enregistrant les restes non négatifs de 0 ou 1, en concaténant ces restes puis en démarrant avec le dernier. Note : si a / b = c, reste d, alors bc + d = a. Par exemple :
Par conséquent, le développement négabinaire de 13 est 11101.
Note : les développements négabinaires d'entiers négatifs ont un nombre pair de bits, tandis que les développements négabinaires d'entiers positifs ont un nombre impair de bits.

## Addition

Pour ajouter deux nombres négabinaires, démarrer avec une retenue 0, et en démarrant à partir du bit de poids faible, ajouter les bits des deux nombres plus la retenue. Le nombre résultant est alors recherché dans la table suivante pour obtenir le bit à écrire dans le résultat, et la retenue suivante :
La deuxième ligne de cette table, par exemple, exprime le fait que –1 = 1 + 1×(–2); la cinquième ligne dit que 2 = 0 + –1×(–2); etc.
Comme exemple, ajouter 1010101 (1 + 4 + 16 + 64 = 85) et 1110100 (4 + 16 – 32 + 64 = 52),
donc, le résultat est 110011001 (1 – 8 + 16 – 128 + 256 = 137).

## Soustraction

Pour soustraire, multiplier chaque bit du deuxième nombre par –1, et ajouter les nombres, en utilisant la même table que ci-dessus.
Comme exemple, calculer 1101001 (1 – 8 – 32 + 64 = 25) moins 1110100 (4 + 16 – 32 + 64 = 52),
donc le résultat est 100101 (1 + 4 – 32 = –27).
Pour rendre négatif un nombre, calculer 0 moins le nombre.

## Multiplication et division

Décaler vers la gauche multiplie par –2, décaler vers la droite divise par –2.
Pour multiplier, multiplier comme en système décimal, mais en utilisant les règles négabinaires pour ajouter la retenue, lorsqu'on ajoute les nombres.
Pour chaque colonne, ajouter retenue à nombre, et diviser la somme par –2, pour obtenir la nouvelle retenue, et le bit résultant comme reste.