Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Frage zu Shellprogrammierung

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Klaus
Gast





BeitragVerfasst am: 22. Feb 2003 11:50   Titel: Frage zu Shellprogrammierung

Hallo Ihr,

tüftle jetzt schon seit 2 Wochen an einem Shellprogramm.
Aber ich finde in keinster Weise ein Lösung.
Und zwar kann man ja eine Dezimalzahl in eine Binärzahl
umwandeln mit der 2er Teilung und Rest Methode.

z.B. 19

19 / 2 = 9 Rest 1
9 / 2 = 4 Rest 1
4 / 2 = 2 Rest 0
2 / 2 = 1 Rest 0
1 / 2 = 0 Rest 1


Ergebnis : 10011

Kann man das überhaupt mit normalen Shellbefehlen lösen (expr
mit / und %)?
Oder brauche ich dazu awk, etc.?

Weiss jemand eine Lösung?

Danke

Gruss Klaus
 

Jochen
Gast





BeitragVerfasst am: 22. Feb 2003 13:01   Titel: Re: Frage zu Shellprogrammierung

Das ist eigentlich ganz leicht. Der Algorithmus ist ja klar: Solange, wie die Eingabe > 1 ist, den Rest der Division berechnen, diesen an das Binärergebnis vorne anhängen und die Eingabe durch 2 teilen. Zum Schluss ausgeben. In reiner Bourne-Shell-Syntax ist das dann
code:
#!/bin/sh
# Skript: dec2bin
# Parameter: $1 - Dezinalzahl
# Ausgabe: Binärzahl

DEC=$1

while [ $DEC -gt 0 ] ; do
REST=`expr $DEC % 2`
DEC=`expr $DEC / 2`
BIN=$REST$BIN
done

echo $BIN

exit 0

Natürlich ohne Checks, ob überhaupt eine Zahl übergeben wird und solche Sachen. Aber so funktioniert es im Prinzip. In der bash kann man das natürlich auch schneller realisieren, indem man statt expr die arithmetische Evaluation verwendet, echte Integer-Variablen zum Rechnen usw.

Jochen
 

rattengift
Gast





BeitragVerfasst am: 22. Feb 2003 13:14   Titel: Re: Frage zu Shellprogrammierung

> Natürlich ohne Checks, ob überhaupt eine Zahl übergeben wird und solche Sachen.

zb muss man auch den fall DEC==0 abfangen. für diesen fall wird nämlich nichts ausgegeben.
 

Jochen
Gast





BeitragVerfasst am: 22. Feb 2003 13:48   Titel: Re: Frage zu Shellprogrammierung

Oder die Frage, was man bei negativen Zahlen ausgeben soll...

Zumindest die Frage mit Null ist aber einfach: Zwischen "DEC=$1" und der while-Schleife ein
[ $DEC -eq 0 ] && { echo "0" ; exit 0 ; }
einsetzen.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy