|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6002
|
Operatori logici C++
Ciao a tutti,
avrei bisogno di un'informazione: in C++ l'operatore <<=2 per esempio, mi shifta di 2 posizioni verso destra una stringa es: 01101011 viene 10101100 E' possibile pero' shiftare mettendo gli 1 anzichè gli 0 in fondo? Stessa cosa per lo shift destro. Esempio vorrei che 01101011 divenisse, shiftando due volte a destra 11011010.Se è possibile, senza usare le maschere, altrimenti, se è l'unico modo, accetto anche consigli su quelle ![]() Thanks |
![]() |
![]() |
![]() |
#2 | ||
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Quindi non puoi fare quello che vuoi usando solo un'operazione di questo tipo. Però: continua a leggere. Quote:
Supponiamo di voler fare uno "shift rotatorio" a destra, di una singola unità. (Il caso generale è più complicato, e non ho voglia di scrivere tutto 'sto codice adesso.) Allora che fai: memorizzi il bit meno significativo, poi shifti normalmente a destra, e poi imposti il nuovo valore del bit più significativo in modo che coincida col vecchio valore del bit meno significativo. Una cosa del tipo: Codice:
mybyte = ((unsigned char)mybyte >> 1) | ((mybyte & 0x1) << 7);
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
||
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
altrimenti puoi inserire nel sorgente un blocco __asm e usare le istruzioni Intel ROR e ROL (se sei su un Intel).
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:17.