Hey Leute, Habe mir ein Bascom Programm angesehen. Bin aber erst am Anfang meiner Lernkurve, daher kapier ich eine Zeile nicht. Da wird folgendes getan: Deklaration: Dim Level As Word Dim Decay As Word Code: Decay = Level Shift Decay , Right , 8 Level = Level - Decay Ist das eine Division durch 8 ?
BasBeginner schrieb: > Ist das eine Division durch 8 ? Nein, eine Division durch 256. Eine 8-fache division durch 2.
Hallo, nur so als Tipp im Bascomforum werden die User Dir auch helfen und man glaubt es kaum, es gibt auch Hilfewebseite: https://avrhelp.mcselec.com/index.html?shift.htm Erster Link bei einem bekannten Suchsystem mit "Shift bascom".
Decay ist eine Variable im Format Word, d.h. 16 bit groß. Shift right verschiebt die obersten (also die 8 linken) 8 Bit nach rechts, von links wandern Nullen nach. Die (vormals) rechten Bit gehen dabei verloren. Beispiel: Decay=40.000 dez., das ist binär: 1001 1100 0100 0000 nach 8x shift right: 0000 0000 1001 1100, das Ergebnis wäre 156 dez. Ist also das gleiche wie wie 8x ein einfaches Shift Right. In anderen Worten: 8 Mal eine Division durch 2 (=/256). nach der letzten Zeile im Code hätten wir dann 40.000 - 156 = 39.844 dez. oder 1001 1011 1010 0100 Die Zeilen machen also nichts anderes als 1/256tel abzuziehen. Vermutlich löst man es so, weil es schneller geht, sprich die Zeitintensiven divisionsroutinen umgeht.
W.P. K. schrieb: > Shift right verschiebt die obersten (also die 8 linken) 8 Bit nach > rechts Nein. Shift right verschiebt alle Bits nach rechts. Sonst würden ja plötzlich auf einer Bitposition 2 Bits stehen.
Beitrag #5056660 wurde von einem Moderator gelöscht.
Mitlesa schrieb: > Nein. Shift right verschiebt alle Bits nach rechts. Bei einem 16-Bit-Wert sind die linken 8 Bit alle, die am Ende übrig bleiben. Im Endeffekt wird also das High-Nibble an das Low-Nibble verschoben. Das High-Nibble wird dann zu 0.
Autsch schrieb: > Im Endeffekt wird also das High-Nibble an das Low-Nibble verschoben. Das > High-Nibble wird dann zu 0. Sehe ich genau so. Lange Ausführung: Lo(Decay) = Hi(Decay) Hi(Decay) = 0 ODER: Decay = Decay / 256
Autsch schrieb: > Mitlesa schrieb: >> Nein. Shift right verschiebt alle Bits nach rechts. > > Bei einem 16-Bit-Wert sind die linken 8 Bit alle, die am Ende übrig > bleiben. > Im Endeffekt wird also das High-Nibble an das Low-Nibble verschoben. Das > High-Nibble wird dann zu 0. Autsch, lies nochmal nach was ein Nibble ist!
Mitlesa schrieb: > Nein. Shift right verschiebt alle Bits nach rechts. > Sonst würden ja plötzlich auf einer Bitposition 2 Bits stehen. Ich behaupte nach wie vor dass meine Aussage korrekt ist. Ich bezog mich auf diese Aussage: W.P. K. schrieb: > Shift right verschiebt die obersten (also die 8 linken) 8 Bit nach > rechts, von links wandern Nullen nach. und das ist nicht korrekt. Insbesondere redet diese Aussage nur von den "obersten" Bits. Nochmal: nein, ein Shift verschiebt alle Bits, nicht nur die obersten. Während meine Aussage allgemein richtig ist (ich habe keine Einschränkungen getroffen), beziehen sie die Widersprecher auf den Sonderfall der aber in der kritisierten Aussage nicht genannt ist.
Mitlesa schrieb: > Während meine Aussage allgemein richtig ist Die Aussage, dass alle Bits geschoben werden, ist richtig. Aber der zweite Teil, dass sonst 2 Bits auf einer Bitposition stehen würden, ist (um es mal höflich auszudrücken) absoluter Humbug!
Brutus schrieb: > Mitlesa schrieb: >> Während meine Aussage allgemein richtig ist > > Die Aussage, dass alle Bits geschoben werden, ist richtig. > Aber der zweite Teil, dass sonst 2 Bits auf einer Bitposition stehen > würden, ist (um es mal höflich auszudrücken) absoluter Humbug! Nein, das ist zur Verdeutlichung, daß alle 16 Bit verrückt werden, also als Ganzes wandern schon recht anschaulich. Es gibt (viele) Leute, di mit solch einem mechanistischen Denken gut zurecht kommen. Darüber hinaus ist in Bascom ein guter Simulator vorhanden, mit dem man schrittweise Zugucken kann, wie die freundlichen Bits ruhig und geordnet nach rechts marschieren.
Oberlajtnant schrieb: > Nein, das ist zur Verdeutlichung, daß alle 16 Bit verrückt werden, Dumpfbacken verstehen diesen versteckten Gag natürlich nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.