Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [c] visualizzare i bit memorizzati di una variabile?

    ragazzi c'è un metodo veloce per conoscere i bit di una variabile?

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    dipende dalla variabile

  3. #3
    char var='A';

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Devi ricorrere agli operatori bitwise.
    every day above ground is a good one

  5. #5
    Originariamente inviato da YuYevon
    Devi ricorrere agli operatori bitwise.
    sto cercando di trovare una funzione già fatta... ma non la trovo

    se qualcuno la trova la potrebbe postare thx

  6. #6
    Ma "conoscere i bit" in che senso? Cosa vuoi ottenere all'atto pratico?
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Sono cose elementari e difficilmente troverai funzioni "già fatte". Ti conviene studiare l'argomento, se conosci l'algebra booleana e il sistema numerico binario (che sono la base per chiunque abbia anche la più vaga e poco seria intenzione di studiare informatica) non ti ci vorrà molto...

    Ma "conoscere i bit" in che senso? Cosa vuoi ottenere all'atto pratico?
    La rappresentazione binaria di un valore in una variabile... spero :|
    every day above ground is a good one

  8. #8
    Originariamente inviato da MItaly
    Ma "conoscere i bit" in che senso? Cosa vuoi ottenere all'atto pratico?
    i bit che compongono quella variabile

    short var = 10;

    writeBit(var);
    //STAMPA: 1010


    Sono cose elementari e difficilmente troverai funzioni "già fatte". Ti conviene studiare l'argomento, se conosci l'algebra booleana e il sistema numerico binario (che sono la base per chiunque abbia anche la più vaga e poco seria intenzione di studiare informatica) non ti ci vorrà molto...
    lo so che non è difficile ma devo già fare altri mille esercizi, se uso qualche funzione già fatta per il mio debug faccio prima

  9. #9
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    si ma se parli di interi è una semplice traduzione in binario..

    tu vuoi questo o una traduzione generica (tipo con un char o un array di char ecc..)?

  10. #10
    Questo mostra ciò che è memorizzato byte per byte; ovviamente utilizzandolo con variabili più grandi di un byte si nota subito se il proprio PC è big o little endian.
    codice:
    #include <stdio.h>
    
    void WriteBits(FILE * Stream, void * Var, size_t VarSize)
    {
        unsigned char * curAddr=(unsigned char *) Var; /* avrei potuto riciclare Var, ma così evito un po' di cast noiosi dopo */
        unsigned char * lastAddr=curAddr+VarSize;
        unsigned int bitCount;
        for(;curAddr!=lastAddr;curAddr++)
        {
            for(bitCount=8;bitCount;bitCount--)
                fputc((*curAddr & (1<<bitCount))?'1':'0',Stream);
        }
    }
    
    int main(void)
    {
        unsigned int a=10;
        short b=5;
        double c=12.63;
        int d=50;
        int * e=&d;
        WriteBits(stdout,&a,sizeof(a));
        putchar('\n');
        WriteBits(stdout,&b,sizeof(b));
        putchar('\n');
        WriteBits(stdout,&c,sizeof(c));
        putchar('\n');
        WriteBits(stdout,&d,sizeof(d));
        putchar('\n');
        WriteBits(stdout,&e,sizeof(e));
        putchar('\n');
        return 0;
    }
    Esempio (gcc 4.3.3, GNU/Linux 2.6.28 x86_64):
    codice:
    matteo@teoubuntu:~/cpp$ gcc WriteBits.c -O1 -O2 -O3 -o WriteBits.o
    matteo@teoubuntu:~/cpp$ ./WriteBits.o 
    00000101000000000000000000000000
    0000001000000000
    0110000101111010000101000010111001000111001000010001010000100000
    00011001000000000000000000000000
    0011111001011100001100000101000101111111001111110000000000000000
    Amaro C++, il gusto pieno dell'undefined behavior.

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.