Read this in other languages: english.
Cette méthode décale le bit correspondant (bit shifting) à la position zéro.
Ensuite, nous exĂ©cutons lâopĂ©ration AND
avec un masque comme 0001
.
Cela efface tous les bits du nombre original sauf le correspondant.
Si le bit pertinent est 1
, le résultat est 1
, sinon le résultat est 0
.
Voir getBit.js pour plus de détails.
Cette méthode met un bit à 1
en fonction dâun rang (bitPosition
),
créant ainsi une valeur qui ressemble à 00100
.
Ensuite, nous effectuons lâopĂ©ration OU
qui met un bit spécifique
en 1
sans affecter les autres bits du nombre.
Voir setBit.js pour plus de détails.
Cette méthode met un bit à 1
en fonction dâun rang (bitPosition
),
créant ainsi une valeur qui ressemble à 00100
.
Puis on inverse ce masque de bits pour obtenir un nombre ressemblant Ă 11011
.
Enfin, lâopĂ©ration AND
est appliquée au nombre et au masque.
Cette opération annule le bit.
Voir clearBit.js pour plus de détails.
Cette mĂ©thode est une combinaison de lââannulation de bitâ et du âforçage de bitâ.
Voir updateBit.js pour plus de détails.
Cette méthode détermine si un nombre donné est pair.
Elle sâappuie sur le fait que les nombres impairs ont leur dernier
bit droit Ă 1
.
Nombre: 5 = 0b0101
isEven: false
Nombre: 4 = 0b0100
isEven: true
Voir isEven.js pour plus de détails.
Cette méthode détermine un le nombre donné est positif.
Elle sâappuie sur le fait que tous les nombres positifs
ont leur bit le plus Ă gauche Ă 0
.
Cependant, si le nombre fourni est zéro
ou zéro négatif, il doit toujours renvoyer false
.
Nombre: 1 = 0b0001
isPositive: true
Nombre: -1 = -0b0001
isPositive: false
Voir isPositive.js pour plus de détails.
Cette mĂ©thode dĂ©cale un nombre donnĂ© dâun bit vers la gauche. Ainsi, toutes les composantes du nombre binaire (en puissances de deux) sont multipliĂ©es par deux et donc le nombre lui-mĂȘme est multipliĂ© par deux.
Avant le décalage
Nombre: 0b0101 = 5
Puissances de deux: 0 + 2^2 + 0 + 2^0
AprÚs le décalage
Nombre: 0b1010 = 10
Puissances de deux: 2^3 + 0 + 2^1 + 0
Voir multiplyByTwo.js pour plus de détails.
Cette mĂ©thode dĂ©cale un nombre donnĂ© dâun bit vers la droite. Ainsi, toutes les composantes du nombre binaire (en puissances de deux) sont divisĂ©es par deux et donc le nombre lui-mĂȘme est divisĂ© par deux, sans reste.
Avant le décalage
Nombre: 0b0101 = 5
Puissances de deux: 0 + 2^2 + 0 + 2^0
AprÚs le décalage
Nombre: 0b0010 = 2
Puissances de deux: 0 + 0 + 2^1 + 0
Voir divideByTwo.js pour plus de détails.
Cette mĂ©thode rend positifs les nombres nĂ©gatifs, et vice-versa. Pour ce faire, elle sâappuie sur lâapproche âComplĂ©ment Ă deuxâ, qui inverse tous les bits du nombre et y ajoute 1.
1101 -3
1110 -2
1111 -1
0000 0
0001 1
0010 2
0011 3
Voir switchSign.js pour plus de détails.
Cette mĂ©thode multiplie deux nombres entiers signĂ©s Ă lâaide dâopĂ©rateurs bit Ă bit. Cette mĂ©thode est basĂ©e sur les faits suivants:
a * b peut ĂȘtre Ă©crit sous les formes suivantes:
0 si a est zero ou b est zero ou les deux sont zero
2a * (b/2) si b est pair
2a * (b - 1)/2 + a si b est impair et positif
2a * (b + 1)/2 - a si b est impair et negatif
Lâavantage de cette approche est quâĂ chaque Ă©tape de la rĂ©cursion
lâun des opĂ©randes est rĂ©duit Ă la moitiĂ© de sa valeur dâorigine.
Par consĂ©quent, la complexitĂ© dâexĂ©cution est O(log(b))
oĂč b
est lâopĂ©rande qui se rĂ©duit de moitiĂ© Ă chaque rĂ©cursion.
Voir multiply.js pour plus de détails.
Cette mĂ©thode multiplie deux nombres entiers Ă lâaide dâopĂ©rateurs bit Ă bit. Cette mĂ©thode sâappuie sur le fait que âChaque nombre peut ĂȘtre lu comme une somme de puissances de 2â.
LâidĂ©e principale de la multiplication bit Ă bit est que chaque nombre peut ĂȘtre divisĂ© en somme des puissances de deux:
Ainsi
19 = 2^4 + 2^1 + 2^0
Donc multiplier x
par 19
est equivalent Ă Â :
x * 19 = x * 2^4 + x * 2^1 + x * 2^0
Nous devons maintenant nous rappeler que x * 2 ^ 4
Ă©quivaut
à déplacerx
vers la gauche par 4
bits (x << 4
).
Voir multiplyUnsigned.js pour plus de détails.
This method counts the number of set bits in a number using bitwise operators.
The main idea is that we shift the number right by one bit at a time and check
the result of &
operation that is 1
if bit is set and 0
otherwise.
Cette méthode décompte les bits à 1
dâun nombre
Ă lâaide dâopĂ©rateurs bit Ă bit.
LâidĂ©e principale est de dĂ©caler le nombre vers la droite, un bit Ă la fois,
et de vĂ©rifier le rĂ©sultat de lâopĂ©ration &
 :
1
si le bit est défini et 0
dans le cas contraire.
Nombre: 5 = 0b0101
DĂ©compte des bits Ă 1 = 2
Voir countSetBits.js pour plus de détails.
This methods outputs the number of bits required to convert one number to another.
This makes use of property that when numbers are XOR
-ed the result will be number
of different bits.
Cette méthode retourne le nombre de bits requis
pour convertir un nombre en un autre.
Elle repose sur la propriété suivante:
lorsque les nombres sont évalués via XOR
, le résultat est le nombre
de bits différents entre les deux.
5 = 0b0101
1 = 0b0001
Nombre de bits pour le remplacement: 1
Voir bitsDiff.js pour plus de détails.
Pour connaĂźtre les bits significatifs dâun nombre,
on peut décaler 1
dâun bit Ă gauche plusieurs fois dâaffilĂ©e
jusquâĂ ce que ce nombre soit plus grand que le nombre Ă comparer.
5 = 0b0101
DĂ©compte des bits significatifs: 3
On décale 1 quatre fois pour dépasser 5.
Voir bitLength.js pour plus de détails.
Cette méthode vérifie si un nombre donné est une puissance de deux.
Elle sâappuie sur la propriĂ©tĂ© suivante.
Disons que powerNumber
est une puissance de deux (câest-Ă -dire 2, 4, 8, 16 etc.).
Si nous faisons lâopĂ©ration &
entre powerNumber
et powerNumber - 1
,
elle retournera0
(dans le cas oĂč le nombre est une puissance de deux).
Nombre: 4 = 0b0100
Nombre: 3 = (4 - 1) = 0b0011
4 & 3 = 0b0100 & 0b0011 = 0b0000 <-- Ăgal Ă zĂ©ro, car c'est une puissance de 2.
Nombre: 10 = 0b01010
Nombre: 9 = (10 - 1) = 0b01001
10 & 9 = 0b01010 & 0b01001 = 0b01000 <-- Différent de 0, donc n'est pas une puissance de 2.
Voir isPowerOfTwo.js pour plus de détails.
Cette mĂ©thode ajoute deux nombres entiers Ă lâaide dâopĂ©rateurs bit Ă bit.
Elle implĂ©mente un additionneur simulant un circuit Ă©lectronique logique, pour additionner deux entiers de 32 bits, sous la forme « complĂ©ment Ă deux ». Elle utilise la logique boolĂ©enne pour couvrir tous les cas possibles dâajout de deux bits donnĂ©s: avec et sans retenue de lâajout de lâĂ©tape prĂ©cĂ©dente la moins significative.
LĂ©gende:
A
: Nombre A
B
: Nombre B
ai
: iĂšme bit du nombre A
bi
: iĂšme bit du nombre B
carryIn
: un bit retenu de la précédente étape la moins significativecarryOut
: un bit retenu pour la prochaine Ă©tape la plus significativebitSum
: La somme de ai
, bi
, et carryIn
resultBin
: Le rĂ©sultat complet de lâajout de lâĂ©tape actuelle avec toutes les Ă©tapes moins significatives (en binaire)resultDec
: Le rĂ©sultat complet de lâajout de lâĂ©tape actuelle avec toutes les Ă©tapes moins significatives (en decimal)A = 3: 011
B = 6: 110
ââââââââŹâââââŹâââââŹââââââââââŹâââââââââââŹââââââââââŹââââââââââââŹââââââââââââ
â bit â ai â bi â carryIn â carryOut â bitSum â resultBin â resultDec â
ââââââââŒâââââŒâââââŒââââââââââŒâââââââââââŒââââââââââŒââââââââââââŒââââââââââââ€
â 0 â 1 â 0 â 0 â 0 â 1 â 1 â 1 â
â 1 â 1 â 1 â 0 â 1 â 0 â 01 â 1 â
â 2 â 0 â 1 â 1 â 1 â 0 â 001 â 1 â
â 3 â 0 â 0 â 1 â 0 â 1 â 1001 â 9 â
ââââââââŽâââââŽâââââŽââââââââââŽâââââââââââŽââââââââââŽââââââââââââŽââââââââââââ
Voir fullAdder.js pour plus de détails.
Voir Full Adder on YouTube.