[POC] Binärsystem oder auch Dualsystem

Hier können Artikel, Tutorials, Bücherrezensionen, Dokumente aller Art, Texturen, Sprites, Sounds, Musik und Modelle zur Verfügung gestellt bzw. verlinkt werden.
Forumsregeln
Möglichst sinnvolle Präfixe oder die Themensymbole nutzen.
Antworten
Benutzeravatar
Terep
Beiträge: 53
Registriert: 17.01.2008, 21:20
Wohnort: Hannover Region

[POC] Binärsystem oder auch Dualsystem

Beitrag von Terep »

poc == piece of code (Ein poc sollte nicht sehr groß sein, dann lieber mehrere erstellen)

Vorwort
Da ich so laut nach Tutorials, Codeschnitzel usw. getönt habe, möchte ich natürlich auch meine Beiträge dazu machen.
Mit poc will ich in der Überschrift auf die Art des Postings hinweisen. Codeschnitzel gefällt mir eigentlich als Bezeichnung nicht so sehr. Ich mag halt eine individuelle Note. Stark wäre es, wenn Andere im Forum die poc-Abkürzung übernehmen.
Beachte, ich bin kein Profi und ersetze kein Fachwissen sondern will hiermit zur Aufarbeitung des Themas aufmuntern.
Wenn Du trotzdem daran interessiert bist, lese weiter, sonst ignoriere es einfach.

Binärsystem oder auch Dualsystem

Po 6 5 4 3 2 1
Bi 32..08..02..
Bi ..16..04..01

01 0 0 0 0 0 1
02 0 0 0 0 1 0
03 0 0 0 0 1 1
04 0 0 0 1 0 0
05 0 0 0 1 0 1
06 0 0 0 1 1 0
07 0 0 0 1 1 1
08 0 0 1 0 0 0
09 0 0 1 0 0 1
10 0 0 1 0 1 0
11 0 0 1 0 1 1
12 0 0 1 1 0 0
13 0 0 1 1 0 1
14 0 0 1 1 1 0
15 0 0 1 1 1 1
16 0 1 0 0 0 0
17 0 1 0 0 0 1
18 0 1 0 0 1 0
19 0 1 0 0 1 1
20 0 1 0 1 0 0
21 0 1 0 1 0 1
22 0 1 0 1 1 0
23 0 1 0 1 1 1
24 0 1 1 0 0 0
25 0 1 1 0 0 1
26 0 1 1 0 1 0
27 0 1 1 0 1 1
28 0 1 1 1 0 0
29 0 1 1 1 0 1
30 0 1 1 1 1 0
31 0 1 1 1 1 1
32 1 0 0 0 0 0
33 1 0 0 0 0 1
34 1 0 0 0 1 0
35 1 0 0 0 1 1
36 1 0 0 1 0 0
37 1 0 0 1 0 1
38 1 0 0 1 1 0
39 1 0 0 1 1 1
40 1 0 1 0 0 0
41 1 0 1 0 0 1
42 1 0 1 0 1 0
43 1 0 1 0 1 1
44 1 0 1 1 0 0
45 1 0 1 1 0 1
46 1 0 1 1 1 0
47 1 0 1 1 1 1
48 1 1 0 0 0 0
49 1 1 0 0 0 1
50 1 1 0 0 1 0
51 1 1 0 0 1 1
52 1 1 0 1 0 0
53 1 1 0 1 0 1
54 1 1 0 1 1 0
55 1 1 0 1 1 1
56 1 1 1 0 0 0
57 1 1 1 0 0 1
58 1 1 1 0 1 0
59 1 1 1 0 1 1
60 1 1 1 1 0 0
61 1 1 1 1 0 1
62 1 1 1 1 1 0
63 1 1 1 1 1 1
Su 32..32..32
Su ..32..32..32

Dualis kommt aus dem Lateinischen und bedeutet „zwei enthaltend“. Gottfried Wilhelm Leibniz (geb. 1. Juli 1646 Leipzig) entwickelte das Binärsystem. Heute arbeitet jeder Computer damit.
Dabei werden 8 Bits zu einem Byte zusammengefasst. Mit wachsender Computerleistung wurden dann mehrere Bytes zusammengefasst. Der ASCII-Zeichensatz American Standard Code for Innformation) stammt aus den 60er Jahren und kommt mit einem Byte aus. Zeitgemäß ist jetzt der Unicode mit 65.536 möglichen Zeichen (2 Bytes). Prima für die, deren Software weltweit eingesetzt wird.

Viele wissen zwar, dass es das Dualsystem gibt, können es aber nicht formulieren. Daher habe ich einfach die ersten 63 Dezimalzahlen parallel mit den Binärzahlen aufgelistet. Damit zeigt sich sehr schön, dass es eine feste Systematik gibt und es wohl gegen die Zahl unendlich läuft.

Das Grundprinzip ist sehr einfach und in der Auflistung gut zu erkennen. Man muss nur Zeile für Zeile analysieren. Interessant ist auch die Tatsache, dass alle Spalten gleiche Endsummen haben.

Es gibt die Bitoperatoren
& bitund
| bitoder
^ bitxor
~ bitinvers
die Erläuterungen und Anwendungen sollte als eigenes poc kommen.

Der nachfolgende Quellcode ist eine kleine C++ Konsolenanwendung.

Wenn man es inhaltlich verstanden hat, sollten die beiden Fragen kein Problem sein.

Haben alle Bitspalten immer die gleichen Summenwerte?
Formuliere für Dich die Begründung
Wie ergibt sich die mögliche Anzahl von 1, 2, 3 oder 4 Bytes.
Bringe es in eine Rechenformel.

Code: Alles auswählen

#include<iostream>
using namespace std;

// Deklaration der Funktion Binärzahlen zeigen
void zeigebinzahl (int x);

int main ()
{
    int biszahl = 256;   // die Binärzahlen werden von 0 bis biszahl angezeigt
    cout << ("\n\n   Bits-Stelle:                     8  7  6  5  4  3  2  1");
    cout << ("\n   Bits-Wert:                     128 64 32 16  8  4  2  1\n");
   
    for (int i = 0; i <=biszahl; i++) 
    {
	cout << "\n   Dezimale: ";
	if (i < 10)  cout << "  ";
	if ((i < 100) && (i > 9))cout << " ";
	   		
	cout    << i << "  als Binaerzahl: ";
  	zeigebinzahl ( i);
	if ( i % 10 == 0)
	{
	    cout << "\n";
	}
    }
    cout <<("\n\n");
}


void zeigebinzahl (int x)
{
    for (int i = 7; i >= 0; i--)
    {
	cout << ("  ");
	putchar ((x >> i & 1) ? '1' : '0');
    }
}
Wenn Du es inhaltlich verstanden hat, sollten die beiden Fragen kein Problem sein.

Haben alle Bitspalten immer die gleichen Summenwerte?
Formuliere für Dich die Begründung
Wie ergibt sich die mögliche Anzahl von Zeichen aus 1, 2, 3 oder 4 Bytes.
Bringe es in eine Rechenformel.

Terep
Zuletzt geändert von Alexander Kornrumpf am 11.09.2010, 14:18, insgesamt 2-mal geändert.
Grund: Code Tags gefixt
Avatar = „Odyssee im Weltraum“ Film von Stanley Kubrick (Warner Brothers);
nach dem Buch von Arthur C. Clarke. It will becoming true ?!!
Alexander Kornrumpf
Moderator
Beiträge: 2106
Registriert: 25.02.2009, 13:37

Re: poc Binärsystem oder auch Dualsystem

Beitrag von Alexander Kornrumpf »

bitte fixe noch das Codetag.

C++ code bekommst du mit [code=cpp]

wenn du gerne ein poc Tag/Präfix einführen möchtest dann doch besser so [POC] im Titel, das entspricht eher der Konvention.

Nimms mir nicht übel aber ich finde die Erklärung nicht sehr gelungen. Die Erklärung http://de.wikipedia.org/wiki/Dualsystem ist z.B. besser. Ich schlage vor dass du die allgemeine Erklärung von dort verlinkst und dich in deinem Thread auf dein POC konzentrierst. So ist der Thread auch übersichtlicher, als wenn man erst an 64 binärzahlen vorbeiscrollen muss.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [POC] Binärsystem oder auch Dualsystem

Beitrag von Krishty »

Zwei kleine Verbesserungen:
Terep hat geschrieben:Der ASCII-Zeichensatz American Standard Code for Innformation) stammt aus den 60er Jahren und kommt mit einem Byte aus.
Tatsächlich kommt der ASCII-Zeichensatz mit sieben Bits aus. Die 128 restlichen Buchstaben, die in ein Byte passen (, und die z.B. für Umlaute und Esszett benutzt werden), sind abhängig von der System-Codepage (dem Zeichensatz, der vom Betriebssystem benutzt wird) – üblicherweise salopp ANSI oder ISO genannt, bei uns ist es fast immer Windows-1252 – und damit nicht weltweit auf allen Systemen gleich. Wann immer man also einen Buchstaben einprogrammiert, der nicht zu den 128 ASCII-Zeichen gehört, ist offen, was an seiner Stelle rauskommen wird.
Terep hat geschrieben:Zeitgemäß ist jetzt der Unicode mit 65.536 möglichen Zeichen (2 Bytes). Prima für die, deren Software weltweit eingesetzt wird.
Unicode umfasst bei weitem mehr Zeichen (momentan über eine Million) … der Knackpunkt ist die Kodierung: Was in C++ als Wide-Character (Typ wchar_t) zur Verfügung steht, umfasst nur die unteren 65535 Zeichen und ist damit als UCS-2 kodiert. Da auch dieser Datentyp wieder als implementation-defined standardisiert ist, kann er z.B. unter Linux-artigen Systemen theoretisch über vier Milliarden Zeichen (in vier Bytes) speichern, ist dort also mit UTF-32 kodiert.

Ich empfehle eigentlich dringendst, wchar_t zu vermeiden / vergessen und UTF-8 zu benutzen. Da das aber erst in den kommenden Jahren nativ in C++ eingeführt werden wird, ist das nichts, was man einem Anfänger aufbürden sollte – der sollte um Gottes Willen bei englischem ASCII bleiben, denn über ordentliche Unicode-Nutzung und allein über die Ausgabe eines Umlauts ließen sich hier ganze Threads füllen.

Was mit dem Fixen des Code-Tags gemeint ist, ist wahrscheinlich: Der soll mit [ code = cpp ] anfangen und mit [ / code ] aufhören (beides ohne Leerzeichen).
Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
exploid
Establishment
Beiträge: 146
Registriert: 21.08.2005, 18:33

Re: [POC] Binärsystem oder auch Dualsystem

Beitrag von exploid »

...
Zuletzt geändert von exploid am 04.11.2010, 12:27, insgesamt 1-mal geändert.
All your base are belong to us! Justice
Benutzeravatar
Jonathan
Establishment
Beiträge: 2353
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [POC] Binärsystem oder auch Dualsystem

Beitrag von Jonathan »

Naja, eigentlich gibt es nicht nur Strom an und Strom aus, sondern es kann ja auch nur ein bisschen Strom fließen. Man könnte vermutlich schon einen Computer mit mehr als 2 Zuständen bauen, aber da man ja auch immer Schwankungen hat sind nur 2 Zustände eben am robustesten.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
RustySpoon
Establishment
Beiträge: 298
Registriert: 17.03.2009, 13:59
Wohnort: Dresden

Re: [POC] Binärsystem oder auch Dualsystem

Beitrag von RustySpoon »

Die Ursache ist aber noch etwas theoretischerer Natur und steckt in der Informationstheorie. Die kleinste mögliche Informationseinheit ist eine Ja-Nein-Aussage (1 sh) und darauf begründet sich dann das "technische" Bit und das Dualsystem. Und das verhält sich bekanntermaßen wiederum sehr günstig zum Oktal- und Hexadezimalsystem.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [POC] Binärsystem oder auch Dualsystem

Beitrag von Krishty »

Die Russen haben in den 60ern und 70ern mal ein paar Trinärcomputer gebaut, die zeichneten sich u.a. durch leicht schnellere Sortierung aus (weil ein Vergleich aus drei Verzweigungen wählte statt aus zwei) und dadurch, dass das Abschneiden der hinteren Stellen einer Zahl automatisch ein Runden war … ich suche mal den Artikel; war ganz interessant zu lesen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten