Page 1 sur 1

Problème de décalage à gauche sur un octet

Publié : mer. 04/avr./2007 20:52
par Gratteur
Cet exemple parle de lui-même, notre ami l'octet se prend pour un long (et mon algo foire), c'est zarb.

Code : Tout sélectionner

b.b

b = %01100001
b << 4
Debug Bin(b)


b = %01101101
b << 4
Debug Bin(b)

Publié : mer. 04/avr./2007 21:11
par minirop
edit : je pense avoit trouvé !
.b est signé donc me 1er bit est pour le signe donc il faut 7 et non 8 chiffres.

si tu veux 8 chiffres, mets .c

Publié : mer. 04/avr./2007 21:34
par Gratteur
Ouais je veux bien que la signature puisse entrainer des problème, mais la ce sont des calculs bit a bit et le bit de signature de devrait pas influer sur la longueur de la valeur. En fait on se retrouve avec autre chose qu'un octet ce qui est anormal (ou alors j'ai loupé quelque chose sur la représentation d'un octet).

Quelqu'un peut expliquer pourquoi cet octet devient un entier ?

Publié : mer. 04/avr./2007 22:23
par minirop
après quelques tests, il n'y a que les nombres négatifs qui soient représentés en binaire sur 4 octets. (%1xxxxxxx)

Publié : mer. 04/avr./2007 22:49
par Gratteur
zarb

Re: Problème de décalage à gauche sur un octet

Publié : mer. 04/avr./2007 23:31
par Backup
Gratteur a écrit :Cet exemple parle de lui-même, notre ami l'octet se prend pour un long (et mon algo foire), c'est zarb.

Code : Tout sélectionner

b.b

b = %01100001
b << 4
Debug Bin(b)


b = %01101101
b << 4
Debug Bin(b)


pour moi c'est un bug a Montrer a Fred !! 8O

Publié : ven. 06/avr./2007 18:52
par Dr. Dri
en fait bin attend un long donc l'octet est transformé en long et s'il est négatif le bit de poids fort sera le 32e...

suffit de faire Bin(b & $FF)

Dri