PDA

View Full Version : [?]Shift


Luc@s
18-09-2004, 10:52
m >> n = m*(2^n)
m << n = m/(2^n)

Queste operazioni sono giuste o sbaglio qualcosa??

cionci
18-09-2004, 12:12
Sbagli il senso...

Lo shift a sinistra moltiplica...lo shift a destra divide... Ovviamente è una divisione intera...

Luc@s
18-09-2004, 12:21
m << n = m*(2^n)
m >> n = m/(2^n)

Indi è cosi?
Che altri usi hanno gli shift?

VICIUS
18-09-2004, 12:35
Originariamente inviato da Luc@s
[...]
Che altri usi hanno gli shift?
Potresti mettere 4 char dentro un int oppure il contrario, ricavare 4 char da un int.

ciao ;)

Luc@s
18-09-2004, 12:41
Originariamente inviato da VICIUS
Potresti mettere 4 char dentro un int oppure il contrario, ricavare 4 char da un int.

ciao ;)

interessante...........

P.S: è usato lo shift, anche per prendere la parte +/- significativa di un valore??se si, come?

VICIUS
18-09-2004, 12:58
Originariamente inviato da Luc@s
interessante...........

P.S: è usato lo shift, anche per prendere la parte +/- significativa di un valore??se si, come?
Per "la parte +/- significativa di un valore" intendi per caso LSB e MSB ?

ciao ;)

Luc@s
18-09-2004, 13:01
Originariamente inviato da VICIUS
Per "la parte +/- significativa di un valore" intendi per caso LSB e MSB ?

ciao ;)

potremmo anche chiamarle cosi :D

VICIUS
18-09-2004, 13:10
Originariamente inviato da Luc@s
potremmo anche chiamarle cosi :D
Ora non ricordo bene come funziona ma ogni volta che si fa uno shift l'ultimo bit che viene messo fuori dovrebbe finire da qualche parte nei flag. dopo ti basta fare una jump su valore di quel flag. (dovrebbe essere il carry flag)

ciao ;)

Luc@s
18-09-2004, 13:12
e in linguaggi HL come C/C++ come trovo LSB e MSB ?

cionci
18-09-2004, 13:25
Questi sono LSW e MSW (WORD perchè sono due byte):

int i = 24232343;
short lsw, msw;

lsw = i & 0xFFFF;
msw = i >> 16;

Per il msb e il lsb agisci di conseguenza...