Routine da decimale a bit mi ritornano solo 7 bit

di il
8 risposte

Routine da decimale a bit mi ritornano solo 7 bit

Ho copiato una routine che converte da decimale a bit. La routine prevedeva un solo decimale del valore ascii di un carattere, io l'ho modificata per le mie esigenze inserendo una stringa di caratteri estraendo un carattere per volta della stessa stringa. La stringa di caratteri corrispode all'oggetto inse.Text come faccio vedere dalla routine che posto. Da inse.Text estraggo la lunghezza e metto in un char il singolo carattere della stringa inse.Text e converto in integer il char. Tutto funziona solo che alla fine, anche se inserisco un solo carattere mi risultano solo 7 bit. Sbaglio io o la routine ha un errore? Un carattere Ascii è un byte di 8 bit, quindi il risultato non funziona all'inverso se inserisco solo 7 bit per darmi come risultato lo stesso carattere-

ps. in pabit.text metto il risultato

var
binario, s: string;
valor,y,x,i:integer;
ch:char;
begin
s:='';
for i:= 1 to length( inse.Text) do begin
ch:=inse.Text;
binario:='';
valor:= ord(ch);
while valor >= 1 do
begin
binario:=IntToStr(valor mod 2)+binario;
valor:=(valor div 2);
end;
s:=s +binario;
end;
pabit.Text:=inttostr(length(s)) +' ' +s;
end;

8 Risposte

  • Re: Routine da decimale a bit mi ritornano solo 7 bit

    E' corretto. Gli zeri non significativi non sono restituti.
  • Re: Routine da decimale a bit mi ritornano solo 7 bit

    Non mi è facile capirlo.. Se io ho 11000111, togliendo gli zeri mi rimane 11111, quindi se 11000111 mi da 199 - 11111 (ho tolto gli zeri) mi da 31 E' ovvio che sbaglio ma la frase di togliere gli zeri mi manda in confusione
  • Re: Routine da decimale a bit mi ritornano solo 7 bit

    @caviccun: secondo il tuo ragionamento, se hai in tasca 100000 euro, togliendo gli zeri, e' come se avessi in tasca 1 euro. La qual cosa non ti sembra un po' strana?

    La posizione degli zeri E' SIGNIFICATIVA!

    1, 10, 100, 1000 sono valori diversi!
    1, 01, 001, 0001 sono lo stesso valore!

    SOLO gli zeri in TESTA al numero non sono significativi.

    Ma questa e' roba da scuola elementare, per la pupattola!
  • Re: Routine da decimale a bit mi ritornano solo 7 bit

    Esatto... Non pensavo di dover dare spiegazioni ulteriori, pensavo fosse chiaro che i valori

    11000111

    e

    011000111

    fossero uguali... E' roba veramente evidente e basilare
  • Re: Routine da decimale a bit mi ritornano solo 7 bit

    Va beh, ho scritto quella frase solo per provocare una risposta, magari avrei dovuto formularla in modo diverso, rimane il fatto che non ho comunque capito ma non fa nulla, la colpa è mia non tua, tu conosci bene come funziona la serie di bit, di più non potevi fare. Molte grazie
  • Re: Routine da decimale a bit mi ritornano solo 7 bit

    caviccun ha scritto:


    solo per provocare una risposta
    rimane il fatto che non ho comunque capito
    di più non potevi fare
    Beh, questa risposta non ha molto senso ...

    Scusa ma se tu dovessi pagare 250 euro con un assegno, scriveresti

    250

    oppure

    00250

    ?
  • Re: Routine da decimale a bit mi ritornano solo 7 bit

    Non uccidermi, hai ragionissima. Comunque ho postato di nuovo su questo argomento ma con un problema diverso, cioè prima non sapevo una cosa, l'ho constatato usandola anche se sapevo che mi dava 7 bit in uscita, tuttavia mi sono accorto, ma quì è lungo spiegare, che 7 bit non mi vanno bene, vorrei 8 bit in uscita, cosa dovrei cambiare? Devo mica forzare l'uscita mettendo in testa uno "0"?

    ps. comunque sono genovese, non spenderei mai 250€, piuttosto il sangue
  • Re: Routine da decimale a bit mi ritornano solo 7 bit

    Sì, inserisci tanti 0 in testa quanti te ne servono
Devi accedere o registrarti per scrivere nel forum
8 risposte