J'ai un registre 16bit.
A bit 0 est la valeur 0. A bit 1 ... 2, la valeur est 3
A bit 3 valeurs est une
A bit 4 la valeur ss 1.Récupération de la valeur à partir du registre 16bit
Donc à la fin du la valeur écrite dans mon registre est 30 parce que: (0 x 1) + (3 x 2) + (1 x 8) + (1 x 16) = 30
Maintenant je veux faire l'inverse pour obtenir quelle valeur est écrit i bits:
(30 & 1)/1 = 0
(30 & 2)/2 = 1 (c'est faux, il devrait être 3)
(30 & 8)/8 = 1
(30 & 16)/16 = 1
Ce que je fais mal?
Hm .... et si j'ai la même situation, mais il y a aussi une certaine valeur dans le bit 9. Ensuite, dans ce cas, la valeur du registre est 1054. Bit 9..10 maintenez la valeur 2. – Josef
donc juste décalé 3 par 9 bits. Écrivez les morceaux sur du papier et vous verrez. En général pour obtenir n bits à la position m et avec '((1 << n) - 1) << m' –
Merci beaucoup. C'est exactement ce dont j'avais besoin. – Josef