Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30

Discussione: Somma di bit

  1. #1

    Somma di bit

    Ciao a tutti, sono un appassionato di informatica mi sono da pochi giorni avvicinato al linguaggio C.
    Ho fatto alcuni esercizi di conversione di basi, ora ne ho trovato uno molto carino che però non so come...iniziare...!
    Dato questo prototipo di funzione:

    void fulladder(int x, int y, int z, int *output)

    Effettuare la somma di tre bit in ingresso (x,y,z e possono assumere solo i valori 0 e 1) restituendo il bit di somma e di riporto (carry).

    I bit in uscita, sono codificati nella variabile intera output (passata per riferimento), sono:
    bit indice 0 di output= somma
    bit di indice 1 di output= carry

    Avete qualche consiglio o suggerimento da darmi, come punto di partenza?

    ps per implementare la fuzione si possono utilizzare tutti gli operatori aritmetici e logici del C.
    Tale funzione non deve contenere chiamate a funzioni di stampa a video.
    Ogni input o output lo gestiro' poi nel main o in altre funzioni specifiche.

  2. #2

  3. #3
    in particolare solo la funzione il main ho già una idea, non so che logica usare per implementare la funzione.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Somma di bit

    Originariamente inviato da informatici
    void fulladder(int x, int y, int z, int *output)

    Effettuare la somma di tre bit in ingresso (x,y,z e possono assumere solo i valori 0 e 1) restituendo il bit di somma e di riporto (carry).

    I bit in uscita, sono codificati nella variabile intera output (passata per riferimento), sono:
    bit indice 0 di output= somma
    bit di indice 1 di output= carry
    Beh basta sommare proprio "pedestremente" i tre valori in input e si ha un int in cui i 2 bit meno significativi sono proprio il risultato che hai appena descritto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quindi faccio x+y+z???
    In sostanza se io sommo 1+1+1il risultato dovrebbe essere 11?
    Come gestisco l'output? e il riporto?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da informatici
    Quindi faccio x+y+z???
    In sostanza se io sommo 1+1+1il risultato dovrebbe essere 11?
    Come gestisco l'output? e il riporto?
    O sfugge qualcosa a me oppure non ti sono molto chiari i concetti più basilari riguardo il sistema di numerazione binario.

    Se hai 3 int che hanno valore 1 (vediamoli in binario)

    codice:
    000.......000001 +
    000.......000001 +
    000.......000001 =
    ------------------
    000.......000011  <- risultato 3 in decimale
    codice:
    void fulladder(int x, int y, int z, int *output) {
        *output = x+y+z;
    }
    Raga ... mi sfugge qualcosa sull'utilità di tale codice/esercizio .......
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Non si può usare la somma ma solo operatori logici, prova a guardare lo schema allegato...
    Immagini allegate Immagini allegate

  8. #8
    Questa è la funzione che ho pensato io...come faccio per gestire la parte:
    void fulladder(int x, int y, int z, int *output) {
    *output = (x & y) | (z & (x ^ y));
    *output = (x^y)^z;
    }
    i bit in uscita, codificati nella variabile intera output (passata per riferimento), sono:
    - bit di indice 0 di output = somma
    - bit di indice 1 di output = carry

    Signor oregon, mi aiuti...

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Avevi detto che si possono usare tutti gli "operatori aritmetici" del C ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    purtroppo ho confuso l'operatore logico con quello aritmetico,
    nel mio caso si possono usare solo: and or xor.

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.