Mascheratura negli operatori Bit a Bit

di il
6 risposte

Mascheratura negli operatori Bit a Bit

Salve sono uno studente di Ingegneria Elettronica e ho un dubbio su questo esercizio. Qualcuno può darmi una mano?

Verificare che una variabile immessa abbia bit pari a 0 in corrispondenza dei bit 0
della variabile mask
i. mask : 01111000 01111000 01111000 01111000
Per lo svolgimento dell’esercizio si effettuino assegnazioni a variabili con valori minori di
64

6 Risposte

  • Re: Mascheratura negli operatori Bit a Bit

    Ho dimenticato di dirvi che bisogna farlo in linguaggio C
  • Re: Mascheratura negli operatori Bit a Bit

    E quindi? Tu che idee hai?
  • Re: Mascheratura negli operatori Bit a Bit

    Avevo pensato ad una cosa del genere, ma non mi convince. E poi non capisco perchè l'esercizio richieda il vincolo delle variabili minori e uguali a 64

    #include <stdio.h>

    int main(){
    unsigned int mask=0X78787878;

    int num;

    printf("INSERISCI NUMERO:\n");
    scanf("%d",&num);

    if(num|mask==mask){
    printf("BIT 0 VERIFICATI\n");
    }
    else
    {
    printf("BIT 0 NON VERIFICATI\n");
    }
    return 0;
    }
  • Re: Mascheratura negli operatori Bit a Bit

    Il vincolo è minore di 64 (non minore o uguale). E' un vincolo che permette di esprimere il valore al massimo con 6 bit significativi
  • Re: Mascheratura negli operatori Bit a Bit

    Quindi bisogna analizzare il confronto solo con i primi 6 bit della maschera?
  • Re: Mascheratura negli operatori Bit a Bit

    Se ho capito bene devi verificare se un numero a 64 bit ha i bit in posizione pari settati a 0 e non puoi fare assegnamenti con valori => 64.
    
    unsigned long long mask = 1;
    printf("Inserire un numero: ");
    unsigned long long n;
    scanf(" %llu",&n);
    unsigned int flag = 0;
    for(int i = 0;i i < 32 && flag == 0; i+= 2)
    {
      flag =( mask << i ) & n;
    }
    printf("Condizione rispettata: %u\n",flag);
    
    GCC 5.2 e standard C99/C11
    EDIT: OPS flag supera 64,fai un modifica e sei a posto
Devi accedere o registrarti per scrivere nel forum
6 risposte