ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Bit von Word extrahieren | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- 2 | [ - Beitrag schreiben - ] |
11.06.2006, 14:06 Uhr MaikG Posts: 5172 Nutzer |
Ich möchte von einem Word z.B. Bit 9 einzeln haben. Ich dachte das geht so irgendwie: (a& AND 65535)512 aber da haut irgendwas nicht hin. Wie muss ich das rechnen? [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 14:25 Uhr DrNOP Posts: 4118 Nutzer |
Ja, so irgendiwe geht das schon ... die Feinheiten der Vorgehensweise hängen an der verwendeten Programmiersprache. Hattest du eine bestimmte im Sinn? Es wird sicher zum Schreiben einfacher, wenn du deine Werte gleich als Hex- oder Binärwert angibst. Und "extrahieren" läßt Spielraum für Interpretationen: Willst du es ausmaskieren, so daß alle Bits außer Bit 9 auf jeden Fall Null sind aber es steht immer noch an Position 9, oder willst du es außerdem verschieben an Position 0? -- Signaturen mit mehr als zwei Zeilen gehen mir auf den Wecker [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 14:31 Uhr Ralf27 Posts: 2779 Nutzer |
@MaikG: Ich kann dir da zur Zeit leider mit Basic helfen: a=(a and 512)512 -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 14:33 Uhr MaikG Posts: 5172 Nutzer |
>Ja, so irgendiwe geht das schon ... die Feinheiten der >Vorgehensweise hängen an der verwendeten Programmiersprache. Hattest >du eine bestimmte im Sinn? Ja, Basic. AND ist ja bekannt, bedeutet eine Division ohne Kommastellen. >Es wird sicher zum Schreiben einfacher, wenn du deine Werte gleich >als Hex- oder Binärwert angibst. Dec ist in MaxonBasic schneller. >Und "extrahieren" läßt Spielraum für Interpretationen: Willst du >es ausmaskieren, so daß alle Bits außer Bit 9 auf jeden Fall Null >sind aber es steht immer noch an Position 9, oder willst du es >außerdem verschieben an Position 0? Wenn Bit9=1 ist möchte ich als ergebniss 1, wenn nicht 0, alle anderen Bits sollen ignoriert werden. [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 18:59 Uhr DrNOP Posts: 4118 Nutzer |
Zitat:Dann sollte Ralf27's Vorschlag doch funktionieren, oder? Falls nicht, solltest du vielleicht noch ein paar Sätze auf das "irgendwas" aus Zitat:verwenden. -- Signaturen mit mehr als zwei Zeilen gehen mir auf den Wecker [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 19:10 Uhr MaikG Posts: 5172 Nutzer |
>Ich kann dir da zur Zeit leider mit Basic helfen: >a=(a and 512)512 Okay also das was ich will 2x, bei 1 Bit. >Dann sollte Ralf27's Vorschlag doch funktionieren, oder? Falls >nicht, solltest du vielleicht noch ein paar Sätze auf das >"irgendwas" aus Probier ich gleich nachher, hab 3 Minuten zum schreiben gebraucht :-) [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 19:12 Uhr Ralf27 Posts: 2779 Nutzer |
@MaikG: Wenn die Überprüfung auf Bit 9(oder jedes andere) nur auf gesetzt oder nicht gehn soll, dann könnte man es auch so machen: if a and 512 then print "Ja, ich bin gesetzt " Es gibt einige Wege. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 19:18 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat: Wie meinst du das? Es ist doch eigentlich egal wie ich denn Zahlenwert angebe, die Zahlen werden dann doch später beim compilieren wieder umgewandelt. Ob ich jetzt 10 schreiben oder &hA dürfte das gleiceh sein, bzw. 255 oder &hFF. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 22:27 Uhr MaikG Posts: 5172 Nutzer |
>Es gibt einige Wege. Ich denke mal der mit and und dann ist am besten. Nur ich würde gerne die rechnung an sich mal begreifen. Wenn ich jetzt z.B. 2 Bit oder 4 Bit haben will, gibts da sowas wie ein Rechenweg? >Wie meinst du das? Es ist doch eigentlich egal wie ich denn >Zahlenwert angebe, die Zahlen werden dann doch später beim >compilieren wieder umgewandelt. if a&=65535 then ist schneller als if a&=&hFFFF then frag mich nicht warum, hab mir notiert das DEC in dem falle schneller ist. Weisst du zufällig auch wie man die 2. und 3. Maustaste abfragt? In Englisch hab ich gelesen man muss DFF016 lesen, 0c00 mit AND hinzufügen und in DFF034 schreiben. Ich bekomme beim auslesen jedoch nur die Maustasten, nicht die vom Joystik(bleiben 0). [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 23:13 Uhr whose Posts: 2156 Nutzer |
Zitat: In der Tat. Der Wert, mit dem Du den Ursprungswert AND-verknüpfen mußt, um zu erfahren, ob das gewünschte Bit gesetzt ist oder nicht, ergibt sich aus der 2 hoch Bitnummer. Um bei dem schon genannten Beispiel zu bleiben: 2 hoch 9 = 512 dec. 2 hoch 10 = 1024 dec. ... Zitat: Äh... das wäre etwas seltsam, da ein Compiler (sofern er was taugt), die Zahlenwerte einer Konstante direkt in Bitmuster wandelt. Da spielt es keine Rolle, ob der Wert ursprünglich als Dezimal- oder Hexadezimalzahl angegeben wurde. Das einzige, was da einen Unterschied machen könnte sind die Zweierpotenzen. Allerdings wäre auch das (wie oben bereits beschrieben) ziemlicher Schwachsinn seitens des Compilers (sprich: eine Konstante erst zur Laufzeit wandeln). Zu der Abfrage der anderen Maustasten kann ich leider wenig sagen, da ich das noch nie "direkt an der Hardware" gemacht habe beim Amiga. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ Dieser Beitrag wurde von whose am 11.06.2006 um 23:14 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 23:22 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat:Ist für mich jetzt wirklich sehr verwunderlich (ich hab es auch noch nicht getestet), aber ok. Zitat: Ja, mit den Systembefehlen. Geht auch mit Basic. Dann kann man sogar auch das Mausrad abfragen (wenn ich das richtig in Erinnerung habe) Dann dürfte das auch auf AOS4, MorphOS laufen. Also einfach das Messagesystem von Inuition benutzen. Aber für das ganze sollte man Systemfenster benutzen, weil sonst der MBasic-Compiler sich mit deinem Programm "anlegt". Hab das selbst schon erleben dürfen als ich mich mit den Menus angelegt habe. Wenn du genaue Infos brauchst, dann müßte ich nochmal nachsehn. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 23:31 Uhr MaikG Posts: 5172 Nutzer |
>Um bei dem schon genannten Beispiel zu bleiben: >2 hoch 9 = 512 dec. >2 hoch 10 = 1024 dec. Ja, das ist klar. Aber wenn ich jetzt nicht ein Bit davon haben will sondern 2 oder 4(Word)? >Äh... das wäre etwas seltsam, da ein Compiler (sofern er was taugt), Maxon Basic >Ja, mit den Systembefehlen. Geht auch mit Basic. Dann kann man sogar >auch das Mausrad abfragen (wenn ich das richtig in Erinnerung habe) Maus, ist ja klar aber Joystik? >Also einfach das Messagesystem von Inuition benutzen. Aber für das >ganze sollte man Systemfenster benutzen, weil sonst der >MBasic-Compiler sich mit deinem Programm "anlegt". Hab das >selbst schon erleben dürfen als ich mich mit den Menus angelegt habe. Fenster ist nicht das Problem. >Wenn du genaue Infos brauchst, dann müßte ich nochmal nachsehn. Das währe nett, ich brauche Fire2 und Fire3. [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 23:39 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Zitat: na das ist doch ganz einfach, das AND sorgt dafür, dass nur noch das gewünschte Bit gesetzt ist, wenn du das Ganze noch durch den (Stellen-)Wert des Bits teilst, kommt halt nur noch eine 1 oder eine 0 heraus. für das n-te bit halt (a AND (2^(n-1)) / (2^(n-1)) falls du das Bit ganz Rechts mit 1 nummerierst. Zitat: es ist natürlich Vollkommen egal ob du den Wert als Hex oder Dezimalwert angibst, die CPU kann nur Binärwerte verarbeiten und vom Compiler werden die Entsprechend geliefert. Bei einer Interpretersprache kann ggf. Dezimal schneller sein, wenn der Interpreter die entsprechenden Zeilen erst beim Ablauf übersetzt. Ich würde darauf aber nichts geben sondern so verfahren, dass ich Werte die Sich leichter in Hexadezimal lesen lassen, auch so übergebe. z.B. kann aus 0x1234 sofort sehen welches das obere Byte und das untere Byte eines Word ist oder auch ob BIT #12 gesetzt ist, bei Dezimal sehe ich das nicht. [ - Antworten - Zitieren - Direktlink - ] |
11.06.2006, 23:44 Uhr MaikG Posts: 5172 Nutzer |
>für das n-te bit halt >(a AND (2^(n-1)) / (2^(n-1)) Ja, das hab ich schon begriffen, ich meine: 12345678 wenn ich jetzt z.B. 34 haben will oder 3456 [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 00:00 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat: Moment, meinst du jetzt verschiedene Joysticktasten? Hm, das wäre mal was neues, wenn es sowas überhaupt gibt. Aber mit Basic kannst du jeweils eine Taste pro Port abfragen. Jetzt mal allgemein: es wäre neu für mich wenn es für den Amiga Joysticks geben würde die mehrere getrennt(!) abfragbare Tasten besitzen würden... Und jetzt nochmal die HEX-Story: Hab es eben mehrfach getestet, kein Unterschied. Es wäre auch wirklich seltsam gewesen, da ja auch DEZ-Zahlen intern umgewandelt werden. Somit es es egal ob der Compiler wärend des compilieren HEX, DEZ oder sonstige Formate umwandelt. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 00:01 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat: Hm, wäre jetzt wirklich etwas kompliziert. Mach es doch mal einfacher: bitmask=2^3+2^4 a=(a and bitmask)bitmask Wenn die bits 3 und 4 gesetzt sind, dann ist a=1 -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 12.06.2006 um 00:02 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 00:14 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Zitat: das ist auch nicht so schwer, du musst zuerst dafür sorgen, dass der benötigte Wert erstmal Rechtsbündig steht, dafür musst du die Bits erstmal nach Rechts verschieben, z.B. um die 3456 zu erhalten musst du erstmal um 8 Bit nach Rechts verschieben, da noch 8 Bits rechts von 3456 stehen). das erreichst du z.B. mit einer Ganzzahl Division, diese MUSS aber die Nachkomma stellen abschneiden, d.h. nicht aufrunden. verschobener_wert = alter_wert / (2^bits_zum_verschieben) für die 3456 z.B. verschobener_wert = 12345678 / (2^8) damit hat dein neuer Wert die Darstellung xx123456 xx ist undefiniert nun musst du die Bits links von 3456 löschen, da 3456 16 Bits benötigt kannst du folgende Rechnung dafür nutzen wert = verschobener_wert AND ((2^benötigte_bits) - 1) die -1 sorgt dafür das nur noch die Bits die benötigt werden in der Maske gesetzt sind [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 00:58 Uhr whose Posts: 2156 Nutzer |
@DariusBrewka: Mal ne ganz dumme Frage: Warum nicht ganz einfach die von Ralf angedeutete Möglichkeit der Maskierung mittels Maske in WORD-Breite benutzen? Die Bitnummern sind ja bekannt (und auch wohl das, was Maik so beißt derzeit). Da kann man sich die Hin- und Herschieberei sparen. So weit mir bekannt ist, kann MaxonBasic auch mit Daten in Form von WORD oder LONGWORD umgehen. Also schlicht 2 hoch (Bitnummer) + 2 hoch (nächste Bitnummer)... -> Bitmaske. Das Ganze mit dem aus dem Register kopierten Wert AND-verknüpfen und er weiß, ob die gewünschten Bits gesetzt sind oder nicht. Bei Word-Breite ist auch der Tipp-/Kopfrechenaufwand bei Dezimalzahlen noch nicht so hoch, wie es bei Longword-Breite der Fall wäre (und selbst da kann man sich immer noch mit Hexadezimalzahlen retten). Dazu kommt noch, daß er versucht, durch die Hardware definierte Bits in einem bestimmten Register zu lesen/zu setzen, so daß sein Programm gar nicht so besonders universell ausgelegt sein muß (in seinem momentan beschriebenen Fall max. 3 unterschiedliche Bits). @Maik: Wenn Du evtl. vorhast, Tastenkombinationen zu erfassen: Du kannst das auch abhängig vom jeweilig gewünschten Ergebnis machen. Das soll bedeuten: Du gehst mit Deinem Programm nach dem Schema der wichtigsten Tastenkombinationen vor. Die wichtigste (am meisten benutzte Kombination) mittels entsprechender Bitmaske abfragen, dann die zweitwichtigste usw. Um eine Reihe von IFs kommst Du dabei so oder so nicht herum, daher kannst Du das auch priorisiert machen und Dir so evtl. mehrere IFs NACH der ersten erkannten Kombination sparen und sofort wieder zur Registerabfrage zurückkehren. Nachteil: Die Laufzeit verändert sich abhängig von der gedrückten Taste/Tastenkombination geringfügig. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 01:09 Uhr Palgucker Posts: 1342 Nutzer |
Vielleicht noch einen zum Thema "wenn ich jetzt z.B. 34 haben will oder 3456" Die Bits von rechts nach links von Null an gezählt würde auch mit folgender Variante gehen. Gebraucht werden von einem 8-Bit Wert z.B. nur die Bits 543. Die oberen (linken) Bits abschneiden mit Wert mod 2 ^ 7 und die unteren Bits dann durch 2 ^ 3 Integerteilung "entfernen". Würde als Formel etwa so aussehen: Bitwert=(Wert mod 2 ^ "höchstes benötige Bit + 1")/ 2 ^ "niedrigstes benötigtes Bit" mfg Palgucker [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 01:10 Uhr whose Posts: 2156 Nutzer |
Zitat: CDTV- und CD32-Joypads zum Beispiel Abgesehen davon: die rechte Maustaste bspw. hat ebenfalls einen "eigenen" Pin am Joystick-Port (die "mittlere" eigentlich auch? Weiß ich jetzt gar nicht aus dem Stegreif...). Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ Dieser Beitrag wurde von whose am 12.06.2006 um 01:17 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 10:40 Uhr MaikG Posts: 5172 Nutzer |
>Moment, meinst du jetzt verschiedene Joysticktasten? Ja. > Hm, das wäre mal was neues, wenn es sowas überhaupt gibt. Die meisten haben mehrere Tasten. Ich hab z.B. ein Atari Joypad(2 Tasten) und ein Sega Joypad hier(3 Tasten f. Amiga). >Aber mit Basic kannst du jeweils eine Taste pro Port abfragen. Ja, ich weiss. Ich gehe aber über die Hardware. >Jetzt mal allgemein: es wäre neu für mich wenn es für den Amiga >Joysticks geben würde die mehrere getrennt(!) abfragbare Tasten >besitzen würden... Wie Spielst du Turrican? Mit der Leertaste? Das ist wie Rechte Maustaste und Mittlere Maustaste. >Hab es eben mehrfach getestet, kein Unterschied. Es wäre auch >wirklich seltsam gewesen, da ja auch DEZ-Zahlen intern umgewandelt >werden. Somit es es egal ob der Compiler wärend des compilieren HEX, >DEZ oder sonstige Formate umwandelt. Ich mach nachher nochmal ein Speedtest. [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 11:16 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat:Äh, ja. mit der Leertaste. Hey, da lerne auch ich noch auf meinen alten Tagen was zu Amigajoysticks. Ich dachte wirklich es gäbe nur die mit einer abfragbaren Taste (ok, sind teilweise noch mehr, aber alle hängen zusammen) und die CD32 und CDTV. Zitat:Klingt logisch. Das ganze macht mich jetzt auch sehr neugierig. Zitat: Ja, teste es am besten nochmal. Es gibt nur einen extremen unterschied zwischen variablen und konstanten. -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 12.06.2006 um 11:16 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 12:12 Uhr bubblebobble Posts: 707 Nutzer |
Evtl. unterstützt das Maxon Basic ja auch Binärzahlen, so wie z.B. Amiblitz. Dann könntest du mit If (a AND %0000000100000000) Then Print "Bit 9 ist gesetzt!" die einzelenen Bits direkt An/ausschalten in der Binärdarstellung, dann sparst du dir das ganze 2 hoch ... Wobei das 2 hoch ... doch schon sehr unschön ist, denn vermutlichwird da mit Floats gerechnet, evtl. geht das dann gar nicht. Wesentlich effizienter wäre ein Bitschiebe Befehl, z.B. If (a AND (1 LSL bitN)) Then Print "Bit ",bitN," gesetzt !" Falls Maxon Basic sowas kann, sollte es aber eigentlich. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 13:25 Uhr DariusBrewka Posts: 899 [Benutzer gesperrt] |
Zitat: ob's effizienter ist will ich bestreiten, aber LSL ist auch nichts anderes als eine Multiplikation mit (2^bitN) oder bei LSR eine division durch (2^bitN). [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 16:05 Uhr MaikG Posts: 5172 Nutzer |
>Äh, ja. mit der Leertaste. Hey, da lerne auch ich noch auf meinen >alten Tagen was zu Amigajoysticks. Naja von den Amiga-Joysticks weiss ich auch nicht viel, die waren nach einer Woche immer schon kaputt. Aber ein Atari-Joypad hatte ich lange, die Sega-Joypads sind aber noch besser. >Klingt logisch. Das ganze macht mich jetzt auch sehr neugierig. Du kannst alle 3 Tastenpins auch als als Ausgang nutzen... Ich wusste mal wie das geht, hoffentlich fällts mir wieder ein. >Ja, teste es am besten nochmal. Es gibt nur einen extremen >unterschied zwischen variablen und konstanten. Konstanten sind viel schneller? Okay, ich war da pingelig: 13.49609 HEX 13.46094 DEC in sekunden bei 1000000 durchläufe. [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 16:59 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat:Da hast du aber seltsame Amigajoysticks gehabt. Ich hab hier noch einige, aber vorallem die kleinen halten ewig. Und ich hab diese wirklich teilweise arg zugesetzt. Zitat: Ja, ich bin mir jetzt nicht sicher, aber ca. 10mal schneller (oder gar noch mehr). Allerding sind das nur Konstanten, die man halt nur im Programmcode ändern kann, nicht aber wärend das Programm läuft. Könntest du mir bitte das betreffende Testprogramm zukommen lassen? -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 18:18 Uhr MaikG Posts: 5172 Nutzer |
>Da hast du aber seltsame Amigajoysticks gehabt. Ich hab hier noch >einige, aber vorallem die kleinen halten ewig. Und ich hab diese >wirklich teilweise arg zugesetzt. Bei mir ist immer das Plastik gebrochen was auf diese Gummipads gedrückt hat. >Könntest du mir bitte das betreffende Testprogramm zukommen lassen? Das hab ich noch nicht mal gespeichert, müsste ungefair so gewesen sein: t!=timer for i&=1 to 1000000 if a&=&h499602d2 then incr bla% end if next i& Print timer-t! t!=timer for i&=1 to 1000000 if a&=1234567890 then incr bla% endif next i& Print timer-t! wobei a&=0 ist. [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 19:20 Uhr bubblebobble Posts: 707 Nutzer |
Das Bitshiften ist dahingehend "effizienter", dass es wirklich sicherstellt dass auch das gewünschte passiert. Der "power" Operator arbeitet nämlich normalerweise mit floats, die dann zurückgewandelt werden müssen. Durch Ungenauigkeit und Rundung (es gibt viele Möglichkeiten das Rundungsbit der FPU zu sezten) kann da schnell mal aus 0x10000 eine 0x0FFFF werden etc., ausserdem ist es wesentlich schneller. Möglicherweise klappts aber auch immer mit 2^bit, aber ich wollte noch eine alternative auszeigen. Mit Hilfe von binärzahlen finde ich aber schöner. Am schönsten wäre natürlich mit Konstanten, die man sich vorher definiert. Denn wenn es um die Button Abfrage geht, haben die Bits ja sicher eine bedeutung, z.B. #define BUTTON1_DOWN 1 LSL 8 #define BUTTON2_DOWN 1 LSL 9 ... (kenne jetzt die Maxon Syntax nicht) und später dann: If (a AND BUTTON1_DOWN) Then Print "Button1 gedrückt!" Evtl. gibts im RKM ja bereits die Bitflags. Aber: Wenn es auch auf non-Classic Rechnern laufen soll, Finger weg von den Hardware Registern!!! Dann sollte alles über IDCMP Messgaes gehen. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 19:22 Uhr Holger Posts: 8116 Nutzer |
Zitat:Hast Du ein "nicht" vergessen? Shift-Operationen sind deutlich schneller als Multiplikationen und um ein Vielfaches schneller als Divisionen. An den Stellen, wo Performanceunterschiede wirklich meßbar sind. Ansonsten gilt wie immer, daß der lesbarere Code der bessere ist. Und wenn man Bit n meint, ist ein shift von 1 um n Bits der besserere Weg. Zitat: Wenn mich meine Erinnerung nicht trügt, sieht das in MaxonBasic so aus: basic code:If (a AND (1 << bitN)) Then Print "Bit ";bitN;" gesetzt !" mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
12.06.2006, 19:28 Uhr Holger Posts: 8116 Nutzer |
Zitat: Es wäre auch insofern seltsam, weil gerade für den Computer Hexdezimalzahlen leichter zu lesen sind. Zumindest wenn man bei der Compilerentwicklung nicht kompletten Unsinn anstellt. Und selbst in einem Interpreter sollten Konstanten maximal einmal geparst werden. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
-1- 2 | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Bit von Word extrahieren | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |