Stampa di bit.

di Anonimizzato13124 il
7 risposte
Salve a tutti , sono alle prese con questo programma che stampa una stringa di bit dal meno al piu significativo.
Mi chiedevo se fosse possibile modificare questo programma per stampare invece dal piu al meno significativo.Grazie.

#include <stdio.h>
#include <stdlib.h>
main()
{
      int i,val,mask;
      mask=1;
      val=7;
      int vect[32];
      
      for(i=0;i<32;i++)
      {
                       
                       if((val&mask)==0)
                       vect[i]=0;
                       else
                       vect[i]=1;
                       mask=mask<<1;
                       }
                       
                       for(i=0;i<32;i++)
                       {
                                       printf("%d",vect[31-i]);
                                       if(i>0&&(i+1)%8==0)
                                       printf(" ");
                                       }
                      system("pause");
                       }



7 Risposte

  • E non hai nessuna idea ?
  • Intendi di far decrescere gli indici nei for e fare partire il ciclo da 32?
  • Ma perché non ti dai una spiegazione di ogni linea e istruzione come ti ho detto di fare?

    Ovviamente non hai scritto tu il codice ma cerca di capirne tutte le parti.

    Ad esempio, ti sei chiesto cosa è

    mask

    e cosa fa questa linea

    mask=mask<<1;

    ?
  • Ultrsound non è sufficiente..
  • Se magari, invece di attendere la manna da ultrasound, mi dai un po' retta e ti metti a capire a cosa serve mask ...
  • daniele90 ha scritto:


    Salve a tutti , sono alle prese con questo programma che stampa una stringa di bit dal meno al piu significativo.
    Mi chiedevo se fosse possibile modificare questo programma per stampare invece dal piu al meno significativo.Grazie.
    Il trucco e' semplice:

    invece di stampare direttamente, salvi i singoli bit in un vettore, ad esempio di caratteri.

    Quindi, stampi il vettore partendo da un lato o dall'altro a seconda dell'ordinamento richiesto

  • (soluzione banale)

    invece di scrivere

    printf("%d",vect[31-i]);

    scrivi

    printf("%d",vect);


    (soluzione un po' più interessante)

    dichiari

    unsigned int mask=1<<31;

    e poi

    mask = mask >> 1;
Devi accedere o registrarti per scrivere nel forum
7 risposte