DEZ versus BIN
Hallo Casio,
ich habe nicht vor Dich zu schlagen
Fangen wir zunächst mit dem einfachen Teil an!
1. Aus zwei Byte ein Word machen:
Action: Compact two bytes into a word or integer.
Syntax: varn = MAKEINT(LSB , MSB)
Remarks:
Varn = Variable that will be assigned with the converted value.
LSB = Variable or constant with the LS Byte.
MSB = Variable or constant with the MS Byte.
The equivalent code is:
varn = (256 * MSB) + LSB
2. Aus einem Word/Integer Highbyte und Lowbyte erzeugen
Action: Retrieves the most significant byte of a variable.
Syntax: var = HIGH( s )
Remarks:
Var = The variable that is assigned with the MSB of var S.
S = The source variable to get the MSB from.
Action: Retrieves the least significant byte of a variable.
Syntax: var = LOW( s )
Remarks:
Var = The variable that is assigned with the LSB of var S.
S = The source variable to get the LSB from.
You can also assign a byte to retrieve the LSB of a Word or Long.
So, und nun kommen wir zum schiwrigen Teil!
Worin besteht bei Controllern der Unterschied zwischen Binär und Dezimal?
Ist es nicht vielmehr so, das es in der digitaltechnik gar kein dezimales Zahlensystem gibt?
Dezimal ist Binär bzw. jede dezimale Zahl ist eine binäre Zahl. Somit ist immer die dezimale Zahl 255 = &B11111111 und 0 = &B00000000. Bedeutet, wenn Du 255 auf einem Port mit 8 Bit ausgibst werden automatisch alle 8 Bit angesteuert und wenn Du einen Port mit dem Bitmuster &B10011001 ansteuerst und den Port in eine Variable einlist so hast Du automatisch die dezimalzahl 153 oder auch 99 HEX. Verstanden?
Du musst Dir also keine Gedanken über Dezimalzahlen machen den Dezimalzahlen sind Zahlen welche Du in Byte oder Word-Variablen usw. ablegst und diese Variablen haben automatisch auch eine binäre Darstellung. Anders kann sie dier Rechner nicht verarbeiten.
Anders sieht es natürlich aus, wenn Du eine Dezimalzahl in einem String abgelegt hast, also als Zeichenkette z.B. "133" (ASCII &H31 &H33 &H33). Dann musst Du hin und her rechnen, aber auch dafür gibt es Konvertierungsroutinen.
Neben den normalen Binärzahlen mit denen Du auch negative Integer Zahlen darstellen kannst (das funktioniert über das binäre 2er-Kompliment) gibt es z.B. noch andere Zahlensysteme wie BCD oder Oktal. Werden die verwendet muss man auch hin und herrechnen.
Übrigens, jede Dezimalzahl ist gleich Binärzahl ist gleich Hexadezimalzahl nur mit anderen Bezugssystemen.
Wenn er die zugehörigen Variablen mit 1, 2, 4 bzw. 8 multipliziert und dann zusammen zählt, kommt da am Ende niemals die Binäre "1001" bei raus!
Natürlich tut sie dass, den jedes Bit in einer binären Zahl hat eine Wertigkeit, genauso wie bei einer Dezimalzahl. Nur sind bei Binärzahl-Darstellung die Wertigkeiten von LSB nach MSB gesehen 2^0, 2^1, 2^2, 2^3 usw. Binär 1001 ist auch nix anderes als dezimal 9 und hexadezimal 9. 255 ist nix anderes als 11111111 bzw. FF.
Ich hoffe Dir damit weiter geholfen zu haben. Faktisch ist es nix anderes als digitaltechnik und das geheimnis vom dualen Zahlensystem. Zahlensysteme sind nur für uns Menschen gemacht und können beliebig hin-und-her gerechnet werden.
So, nun muss ich Dich immer noch nicht schlagen denn Du hast es verstanden, oder? Wenn NEIN dann schau mal in die Wiki rein. Die erklärt es auch ganz gut. Wenn JA must Du Dir nix draus machen denn die Problematik mit Dezimalzahlen versus Binärzahlen (Dualzahlen) ist mir hier im Forum schon ein paarmal aufgefallen, es ist aber wirklich kein Hexenwerk.
Grüße und schönen Abend,
Markus