Operatori bitwise.

di il
7 risposte

Operatori bitwise.

Salve ragazzi mi servirebbe una mano con questo codice:

#include <iostream>

using namespace std;

void displayBit(unsigned);

int main()
{

    unsigned num = 6500;
    displayBit(num);

    return 0;
}
void displayBit(unsigned value)
{
    const int SHIFT = 8 * sizeof(unsigned) - 1;
    const unsigned MASK = 1 << SHIFT;
    
    cout << value << " = ";

    for(unsigned i =1 ; i <= SHIFT+1;i++)
    {
        cout << (value & MASK ? '1' : '0');
        value << = 1;


        if(i%8 == 0)
            cout << ' ';
    }
    cout << endl;
}
Come potete vedere è una funzione che serve per visualizzare in formato binario un numero unsigned.
Il problema è che non ho ben capito la parte del ciclo qualcuno potrebbe aiutarmi?

7 Risposte

  • Re: Operatori bitwise.

    Metti una printf di value in esadecimale printf("%X\n",value) dopo lo shift di 1 di value (value<<=1) e capirai come evolve (per esercizio trasforma su carta in binario i valori esadecimali che leggi).
    Stampa anche in esadecimale il valore di MASK.
  • Re: Operatori bitwise.

    Il problema è che non riesco a capire bene l'operazione di confronto fatta nell'enunciato: cout << (value & MASK ? '1' : '0');
  • Re: Operatori bitwise.

    Infatti se fai quello che ti ho suggerito (stampare un esadecimale value e MASK e poi trasformarli a mano in binario) capirai come funziona.
  • Re: Operatori bitwise.

    Kevinddn9 ha scritto:


    Il problema è che non riesco a capire bene l'operazione di confronto fatta nell'enunciato: cout << (value & MASK ? '1' : '0');
    L'operatore condizionale ternario ?: lo conosci?
    a ? b : c
  • Re: Operatori bitwise.

    Certo che lo conosco quello che mi piacerebbe capire è come avviene nello specifico il confronto fra i bit di MASK e value
  • Re: Operatori bitwise.

    Ho risolto leggendo con maggiore attenzione il mio libro, ringrazio ugualmente chi mi ha risposto
  • Re: Operatori bitwise.

    Bene; tieni in considerazione però che il metodo che ti ho suggerito (sostituito eventualmente dall'uso di un debugger) ti avrebbe permesso di capire da solo; non solo, ti potrebbe essere utile in futuro per capire porzioni di codice apparentemente senza senso. Buono studio
Devi accedere o registrarti per scrivere nel forum
7 risposte