Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1

    conversione da base 10 a base 2 in C

    ciao ragazzi... mi serve una mano...
    vi scrivo il testo dell'esercizio...

    E' richiesto di scrivere 2 funzioni per la conversione da base 10 a base
    2 e viceversa.
    1) void dec2bin(unsigned short input, char bitstring[16])
    Memorizza la rappresentazione binaria di input nel vettore
    bitstring. Il bit meno significativo è memorizzato in bitstring[0].
    I valori di input sono interi unsigned a 16 bit (ovvero limitati
    all'intervallo [0;2161]).
    2) unsigned short bin2dec(char bitstring[16])
    Ha come valore di ritorno la rappresentazione decimale di bitstring.
    Il bit meno significativo è memorizzato in bitstring[0].
    NB:
    Il vettore di caratteri bitstring NON è una stringa di caratteri, perché non è presente il
    carattere di terminazione ‘\0’. Non si possono quindi utilizzare su questo vettore le
    funzioni di manipolazione delle stringhe (strcpy, strcat, ecc.).
    Qualsiasi implementazione alternativa verrà considerata errata!!!

    La difficoltà nsta nel fatto che per eseguirlo non posso fare la divisioneper 2 ma devo utilizzare lo shift e le maschere che non so usare. potete darmi una mano voi? Vi ringrazio di cuore.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cosa non capisci dello shift ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Non so come si usa e nemmeno in che ambito, di C so solo le basi...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... la prima potrebbe essere

    codice:
    void dec2bin(unsigned short input, char bitstring[16])
    {
       int i;
    
       for(i=0; i<16; i++, input>>=1)
          bitstring[i] = '0' | (input & 1);
    }
    ... per la seconda, provaci tu ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ok grazie ora provo a fare il programma e vediamo un po'

  6. #6
    #include <stdio.h>
    int main()
    {
    unsigned short a,b,c,d,e;
    a = 0;
    b = 1;
    c = 2;
    d = 3;
    e = 4;
    char bitstring[16];
    dec2bin(a,bitstring[16]);
    dec2bin(b,bitstring[16]);
    dec2bin(c,bitstring[16]);
    dec2bin(d,bitstring[16]);
    dec2bin(e,bitstring[16]);
    }
    void dec2bin(unsigned short input, char bitstring[16])
    {
    int i;
    for(i=0; i<16; i++, input>>=1)
    bitstring[i] = '0' | input & 1);
    }
    Il programma mi da un errore sulla prima parentesi graffa nella dichiarazione della funzione come mai?

  7. #7
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    trascrivi l'errore..

    ps: questo è sbagliato

    codice:
    void dec2bin(unsigned short input, char bitstring[16])
    {
    int i;
    for(i=0; i<16; i++, input>>=1)
    bitstring[i] = '0' | input & 1);
    }
    questo meno

    codice:
    void dec2bin(unsigned short input, char bitstring[])
    {
    int i;
    for(i=0; i<16; i++, input>=1)
    bitstring[i] = '0' | input & 1);
    }

  8. #8
    Errore trovato!

  9. #9
    Come si fa la funzione per questa richiesta?
    2) unsigned short bin2dec(char bitstring[16])
    Ha come valore di ritorno la rappresentazione decimale di bitstring.
    Il bit meno significativo è memorizzato in bitstring[0].
    utilizzando gli shift e le maschere?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    @Stoicenko

    questo

    input>>=1

    è giustissimo ... semmai è sbagliata la tua correzione ...


    @informatici

    Devi richiamare la funzione nel main con

    dec2bin(a, bitstring);

    e dichiararla in testa ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.