Les bits en C++
J'ai un 5 octet de l'élément de données et j'ai besoin d'aide pour comprendre comment en C++ pour définir un bit individuel de l'un de ces octets; s'il vous Plaît voir mon exemple de code ci-dessous:
char m_TxBuf[4];
Je voudrais régler le bit 2 de haut de byte m_TxBuf[1]
.
00000 0 00 ^ Ce un
Un quelconque support est grandement apprécié;
Merci!
Quoi? Ce qui ne l'00** modèle de dire? Il y a 14 chiffres, mais vous dites que vous avez 5 octets de données (et de vous montrer un 4-tableau d'octets). Et qu'entendez-vous par positionnant le bit 2 de "haut de byte m_TxBuf[1]"?
Je crois qu'il est juste en soulignant le peu qu'il souhaite mettre en haut.
Correct, tout en soulignant le peu de jeu, désolé pour la confusion
et "haut de byte" signifie? Et pourquoi voulez-vous montrer un 4-tableau d'octets quand vous dites que vous avez 5 octets de données?
ce n'est pas "haut de byte", c'est "le bit 2 à élevé" "de byte m_TxBuf[1]". la "haute" est un mot utilisé dans les bas-niveau électronique numérique à dire "sur" l'état d'un bit/fil/bus/etc, ce qui signifie dans ce contexte "1"
Je crois qu'il est juste en soulignant le peu qu'il souhaite mettre en haut.
Correct, tout en soulignant le peu de jeu, désolé pour la confusion
et "haut de byte" signifie? Et pourquoi voulez-vous montrer un 4-tableau d'octets quand vous dites que vous avez 5 octets de données?
ce n'est pas "haut de byte", c'est "le bit 2 à élevé" "de byte m_TxBuf[1]". la "haute" est un mot utilisé dans les bas-niveau électronique numérique à dire "sur" l'état d'un bit/fil/bus/etc, ce qui signifie dans ce contexte "1"
OriginalL'auteur JB_SO | 2010-06-28
Vous devez vous connecter pour publier un commentaire.
Les opérateurs sur les bits en C++.
Peu endianness.
m_TxBuf[1] |= 1 << 2
OriginalL'auteur Andras Vass
Vous pouvez utiliser bit à bit ou (
|
) pour définir les bits individuels, et au niveau du bit et (&
) pour les désactiver.OriginalL'auteur Anon.
OriginalL'auteur Amardeep AC9MF
À définir un peu, vous utilisez ou au niveau du bit. Le ci-dessus utilise composé d'affectation, ce qui signifie que le côté gauche est l'une des entrées et de la sortie.
OriginalL'auteur Matthew Flaschen
Généralement nous définir les bits à l'aide de l'opérateur bit à bit OU (opérateur| opérateur|= comme une abréviation).
En supposant 8-bits d'un octet (où le MSB est considéré comme le "7ème" bit et le LSB considéré comme le 0e: MSB 0) pour des raisons de simplicité:
On peut écrire une fonction simple:
On peut également tester les bits à l'aide de l'opérateur&.
Vous devriez également envisager de std::bitset à cet effet et qui rendra votre vie plus facile.
Toutes mes excuses, j'ai précisé qu'partie confusion dans le post. Je vais de gauche à droite à partir de MSB (most significant bit) à LSB comme nous le représentent en général des bits sur le papier. Le MSB est le 1er bit LSB 8e.
Réglage de la 8 bits, par conséquent, augmente la valeur de 1.
À moins, bien sûr, il est déjà défini 🙂
Je l'ai mis à l'ESM 0 convention (allant de 0 à 7) depuis '8' bit est vraiment à confusion avec le recul.
OriginalL'auteur stinky472
Suffit d'utiliser std::bitset<40> et puis l'indice de bits directement.
OriginalL'auteur Crazy Eddie