Problemino binario
Inizio già a rompere non appena arrivato! Devo preparare l'esame di principi di informatica ma ho un paio di dubbi sul complemento a 2. So quasi tutto ciò che mi serve: per convertire da decimale a complemento a 2, converto il decimale in binario (valore assoluto), poi scambio 0 in 1 e viceversa partendo dal primo 1 meno significativo e mantenendolo, e convertire i rimanenti; oppure scambiare 0 in 1 e viceversa dell'intera stringa e poi aggiungerci 1. Fin qua ok. Il mio problema è l'inverso.
Data una stringa, ottenere il numero.
Per esempio questo esercizio
http://i49.tinypic.com/5chqn7.jpg
la prima stringa di bit in ca2 dovrebbe valere +1303
La seconda non so se sia +1291 o -1291. D'istinto direi -1291 siccome il primo bit significativo è 1.
Idem per la terza che sono in dubbio se valga +1931 o -1931. Sempre d'istinto direi -1931.
Anche perchè ricordo che per sapere quanto vale una stringa in ca2 se non sbaglio, bisogna convertire i bit e vedere cosa risulta in valore assoluto; poi se c'è 1 come primo bit significativo allora è negativo; se c'è 0 è positivo.
Quindi: 101011110101 = in ca2: 010100001011 che equivale a 1291. Siccome la stringa di partenza ha un 1 come bit significativo (101011110101), in ca2 dovrebbe equivalere a -1291.
Stessa cosa per l'altro.
Ha senso ciò che dico?
Data una stringa, ottenere il numero.
Per esempio questo esercizio
http://i49.tinypic.com/5chqn7.jpg
la prima stringa di bit in ca2 dovrebbe valere +1303
La seconda non so se sia +1291 o -1291. D'istinto direi -1291 siccome il primo bit significativo è 1.
Idem per la terza che sono in dubbio se valga +1931 o -1931. Sempre d'istinto direi -1931.
Anche perchè ricordo che per sapere quanto vale una stringa in ca2 se non sbaglio, bisogna convertire i bit e vedere cosa risulta in valore assoluto; poi se c'è 1 come primo bit significativo allora è negativo; se c'è 0 è positivo.
Quindi: 101011110101 = in ca2: 010100001011 che equivale a 1291. Siccome la stringa di partenza ha un 1 come bit significativo (101011110101), in ca2 dovrebbe equivalere a -1291.
Stessa cosa per l'altro.
Ha senso ciò che dico?
Risposte
Il bit più significativo in CA2 determina il segno. Se il bit più significativo è uguale a 1 allora devi mettere il segno meno e cambiarlo di segno per ottenerne il valore assoluto.
Quindi 101011110101 essendo il primo bit significativo =1, il numero sarà negativo; complemento e viene 010100001011 = 1291. Avendo sempre quel 1 di prima, il risultato di 101011110101 in complemento a 2 sarà -1291?
Sì, è così..
Perfetto come dicevo io. Sono due giorni che chiedo in giro e tutti mi davano risposte diverse e poco convincenti.
Un'altra domanda, il BCD. Io so che il bcd rappresenta un numero decimale ogni 4 bit.
Sempre nel caso 101011110101, avrei quindi 1010|1111|0101
il risultato teoricamente sarebbe 10|15|3
ma se non sbaglio il BCD sta dentro un insieme compreso tra 0 e 9; siccome lì avrei un 10 e un 15, la stringa binaria in BCD non è rappresentabile, giusto?
Un'altra domanda, il BCD. Io so che il bcd rappresenta un numero decimale ogni 4 bit.
Sempre nel caso 101011110101, avrei quindi 1010|1111|0101
il risultato teoricamente sarebbe 10|15|3
ma se non sbaglio il BCD sta dentro un insieme compreso tra 0 e 9; siccome lì avrei un 10 e un 15, la stringa binaria in BCD non è rappresentabile, giusto?