[Risolto]Sottrazione mediante complemento.

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
ubuntumate
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1180
Iscrizione: giovedì 28 maggio 2015, 18:18
Distribuzione: Windows 7
Sesso: Maschile
Località: Milano

[Risolto]Sottrazione mediante complemento.

Messaggio da ubuntumate »

...a 2 si intende, dato che la sottrazione mediante complemento a 1 pare non essere molto comune nelle ALU moderne.
Devo eseguire delle sottrazione con operandi senza segno, sfruttando il complemento a 2. Mi sono imbattuto in due sottrazioni di cui non riesco a calcolare la differenza correttamente attraverso il metodo in oggetto. Le due sottrazioni sono:
(b) 11110 - 1110 e (d) 1010001 - 101

La b mi crea problemi perché facendo il complemento a 2 del sottraendo e sommando questo al minuendo ho come risultato 100000, ottenendo 0 (dato che essendo il minuendo maggiore del sottraendo devo ignorare il riporto generato dalla somma) come differenza, che è ovviamente errata.
La d invece dovrebbe generare un riporto ma ciò non accade perché sbaglio qualcosa. Facendo la somma tra 101001 e il complemento a 2 di 101 ottengo 101100 senza avere riporto sull'ultima colonna, cosa che dovrebbe accadere quando il minuendo è maggiore del sottraendo.
Ultima modifica di ubuntumate il mercoledì 14 settembre 2016, 20:18, modificato 1 volta in totale.
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: Sottrazione mediante complemento...

Messaggio da Zoff »

Non è chiaro cosa tu stia chiedendo.

Nella (b) non hai inserito uno zero di troppo?

Codice: Seleziona tutto

00011110-
00001110
diventa con complemento a 2 a 8bit:

Codice: Seleziona tutto

00011110+
11110010=
--------
00010000 (più un riporto)
Nella (d)

Codice: Seleziona tutto

01010001-
00000101
diventa con complemento a 2 a 8bit:

Codice: Seleziona tutto

01010001+
11111011=
--------
01001100 (più un riporto)
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
ubuntumate
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1180
Iscrizione: giovedì 28 maggio 2015, 18:18
Distribuzione: Windows 7
Sesso: Maschile
Località: Milano

Re: Sottrazione mediante complemento...

Messaggio da ubuntumate »

Chiedevo come mai i conti non tornavano. Ora, vedendo come hai svolto la sottrazione tramite complemento, ho capito il motivo dei problemi che ho riscontrato: banalmente scordavo di considerare il sottraendo a N bit con N pari ai bit del minuendo, perciò effettuando il complemento a 2 del sottraendo ed eliminando gli zero non significativi, ottenevo tutt'altro che il risultato corretto. Hai fatto bene a sottolineare che le operazioni vanno svolte considerando 8 bit, Zoff.
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
Avatar utente
M_A_W_ 1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 856
Iscrizione: venerdì 15 febbraio 2013, 3:57
Desktop: KDE
Distribuzione: SuSE
Sesso: Maschile
Località: Un luogo geometrico
Contatti:

Re: Sottrazione mediante complemento...

Messaggio da M_A_W_ 1968 »

...e più in generale, col massimo numero di bit presente tra gli operandi, se stiamo solo baloccandoci con carta e penna. Altrimenti si parla necessariamente e automaticamente di ampiezze di registro e memory bus, e più in generale di vincoli hardware molto specifici.
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...

"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
Avatar utente
ubuntumate
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1180
Iscrizione: giovedì 28 maggio 2015, 18:18
Distribuzione: Windows 7
Sesso: Maschile
Località: Milano

Re: Sottrazione mediante complemento.

Messaggio da ubuntumate »

Si tratta di un esercizio da svolgere con carta e penna prima di affrontare le basi delle ALU. Fortunatamente ho risolto, ringrazio entrambi. Dovrò sicuramente comprendere la causa di queste continue sviste e blocchi per delle banalità, mai avuti fino a un po' di tempo. Sarà la vita, immagino.
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: preben e 13 ospiti