Comment définir, effacer, basculer et vérifier un bit dans JavaScript?Comment définir, effacer et basculer un seul bit dans JavaScript?
Répondre
Pour obtenir un masque de bits:
var mask = 1 << 5; // gets the 6th bit
Pour tester si un bit est:
if ((n & mask) != 0) {
// bit is set
} else {
// bit is not set
}
Pour définir un bit:
n |= mask;
Pour effacer un peu:
n &= ~mask;
Pour basculer un peu:
n ^= mask;
Référez-vous au Javascript bitwise operators.
Je veux ajouter des choses (merci à @cletus)
function bit_test(num, bit){
return ((num>>bit) % 2 != 0)
}
function bit_set(num, bit){
return num | 1<<bit;
}
function bit_clear(num, bit){
return num & ~(1<<bit);
}
function bit_toggle(num, bit){
return bit_test(num, bit) ? bit_clear(num, bit) : bit_set(num, bit);
}
C'est super merci. Pouvez-vous expliquer pourquoi bit_test fonctionne? Je comprends le bon décalage pour déplacer le bit intéressant vers la position la plus à droite, mais je me perds à essayer de comprendre quelle est la valeur intermédiaire et pourquoi son reste lorsqu'il est divisé par 2 est différent de zéro lorsqu'il est défini. – Raoul
Après avoir mis le bit voulu à la position la plus à droite, vous testez simplement si la nouvelle valeur est altérée (nouvelle valeur% 2! = 0). Un nombre impair aura bit0 = 1 ou bien bit0 = 0 (parce que le poids du bit0 est de 2 à la puissance 0 qui est 1) – UnLoCo
J'ai construit une classe BitSet avec l'aide d'informations @cletus:
function BitSet() {
this.n = 0;
}
BitSet.prototype.set = function(p) {
this.n |= (1 << p);
}
BitSet.prototype.test = function(p) {
return (this.n & (1 << p)) !== 0;
}
BitSet.prototype.clear = function(p) {
this.n &= ~(1 << p);
}
BitSet.prototype.toggle = function(p) {
this.n ^= (1 << p);
}
- 1. Explication d'un algorithme pour définir, effacer et tester un seul bit
- 2. Comment corriger ou effacer un objet Javascript?
- 3. Comment basculer entre un profil Maven et un autre?
- 4. JavaScript effacer ou annuler
- 5. Opérateurs bit à bit et «endianness»
- 6. Comment retourner un bit dans SQL Server?
- 7. basculer l'instruction et les boucles à l'aide de jquery/javascript
- 8. Javascript effacer tous les cookies
- 9. Définir la visibilité sur un seul onglet dans tabcontrol (winforms)
- 10. Comment effacer un arbre dans ExtJs?
- 11. Javascript pour ouvrir plusieurs onglets dans un seul navigateur
- 12. Comment effacer un objet NSSound
- 13. Basculer entre UITabBarController et UINavigationController
- 14. Comment imprimer un seul commentaire dans drupal?
- 15. Comment sélectionner un seul élément dans jQuery?
- 16. C++ Qt: opérations bit à bit
- 17. Obtenir un bit de SqlServer dans C#
- 18. Comment utiliser bit/bit-operator pour contrôler l'état de l'objet?
- 19. WPF Comment effacer un DrawingVisual avec RemoveVisualChild
- 20. Réglage de bit et lisibilité de code
- 21. Comment puis-je définir le paramètre conversionPattern d'un Applet de console Log4Net pour effacer l'écran?
- 22. Comment effacer une zone dans un objet BitmapData?
- 23. Comment effacer un bouton radio sélectionné dans WatiN?
- 24. Comment ajouter un bouton Effacer à UITextField?
- 25. Comment faire pour basculer flash.media.Video?
- 26. Définir la chaîne de ressource dans javascript
- 27. Comment basculer les onglets et pushViewController en même temps?
- 28. Comment effacer un attribut d'objet utilisateur dans Active Directory?
- 29. Comment effacer une liste interne dans Scheme?
- 30. Request.Url.Host et ApplicationPath en un seul appel
@user JavaScript et C/C++ sont des langues différentes. Très utile d'avoir des réponses différentes d'eux deux. – cmac