Operazioni bit a bit

di il
2 risposte

Operazioni bit a bit

Salve, ho un dubbio su quest'esercizio sulle operazioni bit a bit:

qual è il significato della seguente istruzione?
i&=~(1<<j)
provando ho notato che:
-se i=j il risultato è il valore di i e di j;
-se i è un numero che convertito in binario è rappresentato in meno bit di j convertito in binario, il risultato è 0.
ES. i=3 j=8 (rappresentazione a 8bit)
  00000011  &
  11111000
----------------------
  00000000
secondo voi posso dare questa spiegazione? o qualcuno mi può spiegare?

2 Risposte

  • Re: Operazioni bit a bit

    La spiegazione corretta è che quell'espressione serve ad

    azzerare (impostare a 0)

    il bit di i indicato da j

    Nell'esempio che fai, quindi, c'è un errore perché non puoi trattare il bit 8 se scegli la rappresentazione ad 8 bit.

    Se vuoi un esempio concreto, il seguente codice imposta i dati in modo che i contenga il valore ASCII del carattere a minuscolo
    
    	unsigned char i, j;
    	i = 'a';
    
    Dato che il bit 5 del carattere ASCII è a 0 per le maiuscole, per azzerare il bit 5 scriverai
    
    	j=5;
    	i&=~(1<<j);
    
    e quindi
    
    	printf("%c\n", i);
    
  • Re: Operazioni bit a bit

    Ah capito grazie 1000
Devi accedere o registrarti per scrivere nel forum
2 risposte