# [Brainfuck] Grundlegende Fragen



## Irgendjemand_1 (1. Juni 2008)

Hiho.
Ich hab mir grad mal aus Spaß Brainfuck angeschaut.
Hier gibt's ja bestimmt n paar die das auch schonmal ausprobiert haben 
Ich hätte da mal eine Frage ...
Wenn ich jetzt, sagen wir mal die Zahl 4321 ausgeben möchte (bei 8-Bit), müsste ich dann etwa in jeden Byte die Ziffern 4 bzw 3 bzw 2 bzw 1 schreiben und diese dann nacheinander ausgeben?
Und kann man irgendwie die ASCII-Ausgabe ausschalten (IDE-Abhängig?), damit man anstatt den ASCII-Werten einfach Zahlen ausgespuckt bekommt?  Wäre ja doof, wenn man für die Zahl 255 3 Bytes bräuchte, obwohl man diese ja in einem Byte darstellen kann. Bei 64 Bit wäre das ganze ja noch schlimmer, dann vergeudet man ja noch viel mehr Speicherplatz


----------



## Matthias Reitinger (1. Juni 2008)

Irgendjemand_1 hat gesagt.:


> Wenn ich jetzt, sagen wir mal die Zahl 4321 ausgeben möchte (bei 8-Bit), müsste ich dann etwa in jeden Byte die Ziffern 4 bzw 3 bzw 2 bzw 1 schreiben und diese dann nacheinander ausgeben?


Was meinst du mit „in jedem Byte“? In welcher Form liegt die Zahl 4321 überhaupt in deinem Programm vor?



Irgendjemand_1 hat gesagt.:


> Und kann man irgendwie die ASCII-Ausgabe ausschalten (IDE-Abhängig?), damit man anstatt den ASCII-Werten einfach Zahlen ausgespuckt bekommt?


Nein, das wäre ja zu einfach ;-) Das ist aber wenn dann ein Feature des Interpreters/Compilers, nicht der IDE.

Grüße,
Matthias


----------



## Irgendjemand_1 (1. Juni 2008)

Matthias Reitinger hat gesagt.:


> Was meinst du mit „in jedem Byte“? In welcher Form liegt die Zahl 4321 überhaupt in deinem Programm vor?


In gar keiner, das war nur ein Beispiel 
Mit "In Jedem Byte" meine ich nur die 4 Bytes für jeweils eine Ziffer. Nicht etwa alle 30.000 
Ich müsste ja im erstem Byte die 4 gespeichert haben, im 2. die 3, ...
Und dann nacheinander alle ausgeben.
Aber das ist doch extrem umständlich, oder?




Matthias Reitinger hat gesagt.:


> Nein, das wäre ja zu einfach ;-) Das ist aber wenn dann ein Feature des Interpreters/Compilers, nicht der IDE.


Hm, das heißt bei zB der Zahl 11 hätte ich das selbe Problem wie mit der Zahl 4321? Obwohl ein Byte ja eigentlich ausreicht, um 256 darzustellen.


----------



## Matthias Reitinger (1. Juni 2008)

Irgendjemand_1 hat gesagt.:


> Ich müsste ja im erstem Byte die 4 gespeichert haben, im 2. die 3, ...
> Und dann nacheinander alle ausgeben.
> Aber das ist doch extrem umständlich, oder?


Wenn dir nacheinander ausgeben zu umständlich ist, dann schlag doch eine einfachere Methode vor. Mir ist zumindest keine bekannt. Wenn du eine Zahl auf ein Blatt Papier schreibst, schreibst du doch auch die Ziffern hintereinander auf, oder etwa nicht?



Irgendjemand_1 hat gesagt.:


> Hm, das heißt bei zB der Zahl 11 hätte ich das selbe Problem wie mit der Zahl 4321? Obwohl ein Byte ja eigentlich ausreicht, um 256 darzustellen.


Es ist zwar schön und gut, dass sich 255 (nicht 256) in einem Byte darstellen lässt. Allerdings ist das nicht die Darstellung, die du für die Ausgabe haben möchtest. Also musst du eine Umwandlung vornehmen. Das ist in etwa vergleichbar mit einem Bild, das (verlustfrei) komprimiert abgespeichert wurde – es ist zwar schön und gut, dass man nur z.B. 10kB braucht, um die Bilddaten zu speichern, allerdings muss man zum Anzeigen des Bildes die unkomprimierte Fassung wiederherstellen, die deutlich mehr Speicher belegt. So ist das nun mal 

Grüße,
Matthias


----------



## Irgendjemand_1 (1. Juni 2008)

Matthias Reitinger hat gesagt.:


> Wenn dir nacheinander ausgeben zu umständlich ist, dann schlag doch eine einfachere Methode vor. Mir ist zumindest keine bekannt. Wenn du eine Zahl auf ein Blatt Papier schreibst, schreibst du doch auch die Ziffern hintereinander auf, oder etwa nicht?


Naja ich finde Brainfuck allgemein sehr umständlich 
Aber es macht halt Spaß.
Nur würde es eben mehr Spaß machen, Zahlen, die größer als 9 sind, trotzdem noch in einem Byte darstellen zu können 




Matthias Reitinger hat gesagt.:


> Es ist zwar schön und gut, dass sich 255 (nicht 256) in einem Byte darstellen lässt. Allerdings ist das nicht die Darstellung, die du für die Ausgabe haben möchtest. Also musst du eine Umwandlung vornehmen. Das ist in etwa vergleichbar mit einem Bild, das (verlustfrei) komprimiert abgespeichert wurde – es ist zwar schön und gut, dass man nur z.B. 10kB braucht, um die Bilddaten zu speichern, allerdings muss man zum Anzeigen des Bildes die unkomprimierte Fassung wiederherstellen, die deutlich mehr Speicher belegt. So ist das nun mal


Okay, stimmt 255. Der Vergleich ist zwar schön und gut aber eigentlich auch falsch 
In der komprimierten Bilddatei sind die Informationen ... man könnte sagen verschlüsselt.
In Brainfuck handelt es sich nur um eine andere Darstellung der Zahlen  Sie werden ja nicht verändert, nur anders geschrieben (eben die zugehörigen ASCII-Zeichen).
Aber Speicherverlust ist es auf jeden Fall.

Meine Fragen wären damit wohl beantwortet. Danke dir 

Edit: Aber was bringt es dann, wenn man das ganze auf 16 Bit stellt?
Dann wiederholt sich die ASCII-Tabelle ein paar mal, aber die Werte ändern sich kein Stück? Okay, man kann dann intern im Programm auf bis zu 60.000 (oder so) zugreifen, aber mir verschließt sich der Sinn der Sache oO


----------

