Cercare di chiarire qualcosa.Spostamenti bit a bit logici e aritmetici
rimane inteso che per quanto riguarda aritmetici, logici turni bit a bit:
<<
lavoro uguali per entrambi>>
spostamenti differisce dal fatto spostamento logico sarà sempre pad byte con 0, mentre spostamento aritmetico lo riempirà con il bit del segno.
Come posso differenziare questo utilizzando C?
Da quello che ho capito, gli operatori attuali sono gli stessi <<
, >>
Come avrebbe comandato differiscono tra:
int i=1;
printf ("%d\n", i >> 1); // logical shift
int j=1;
printf ("%d\n", j >> 1); // arithmetical shift
prega fatemelo sapere,
C'è un modo per forzare un particolare turno. Ad esempio, mi piacerebbe (x <<1)>> 1 per rilasciare il segno "-" – JAM
@Jerry, @mac: vedere l'aggiornamento – kennytm
@mac: scartare il bit del segno non è lo stesso che prendere l'assoluto valore nel complemento a due: – jamesdlin