Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156

    [C]bitwise: invertire il valore binario di una variabile

    Salve a tutto il forum!

    vorrei capire se, dato un intero senza segno con un determinato valore, io posso, attraverso gli operaori bitwise, assegnare ad un'altra variabile senza segno l'inverso di quel numero...

    per esempio

    io ho la variabile num a cui assegno il valore 19 che in binario (4 byte) è pari a

    codice:
    00000000 00000000 00000000 00010011

    io vorrei poter assegnare alla variabile num2 l'inverso di quel numero binario e cioè

    codice:
    11001000 00000000 00000000 00000000
    pari al valore decimale di 3355443200


    ho svolto un esercizio per la visualizzazione dei valori della variabile espresso in bit...

    ma riesco solamente a visualizzare il valore inverso senza assegnarlo REALMENTE ad un'altra variabile...

    per completezza vi riporto il codice...


    codice:
    #include <stdio.h>
    
    void visualizzaBit (unsigned number);
    
    void reverseBit (unsigned number);
    
    int main(){
       
       unsigned num;
       
       
       printf("Inserisci un numero: ");
       scanf("%u", &num);
       
       printf("\n\nHai digitato il numero %u la cui rappresentazione binaria corrisponde a:\n\n", num);
       visualizzaBit (num);
       
       
       
       printf("\n\nLa rappresentazione binaria inversa del numero %u corrisponde a:\n\n", num);
       reverseBit(num);
       
       
       return 0;
       
       
    }
    
    void visualizzaBit (unsigned number){
       
       unsigned mask = 1;
       
       int cont;
       
       mask <<= 31;
       
       
       for (cont = 1; cont <= 32; cont++){
          
          putchar (mask&number ? '1' : '0');
          
          if (cont % 8 == 0)
             printf("\t");
          
          number <<=  1;
          
       }
       
       printf("\n\n");
       
       return;
       
    }
    
    void reverseBit (unsigned number){
       
       int i;
       
       unsigned mask = 1;
       
       for (i = 1; i < 32; i++){
          
          putchar (mask & number ? '1': '0');
          
          number >>= 1;
          
          if ( i % 8 == 0)
             printf("\t");
          
       }
       
       return;
       
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,260
    Semplice:
    codice:
    unsigned int bit_reverse (unsigned int val)
    {
        unsigned int res = 0;
        int i;
        for (i = 0; i < sizeof(unsigned int)*8; i++, val>>=1)
            res = res << 1 | (val & 1);
        return res;
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    156
    grande!! velocissimo e precisissimo...

    ho appena iniziato con gli operatori bitwise e devo ancora fare un bel po' di pratica...

    ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.