hallo, kann mir jemand kurz schreiben, was folgendes bewirkt: #define KEY0 0 #define KEY1 1 #define KEY2 2 #define REPEAT_MASK (1<<KEY1^1<<KEY2) // repeat: key1, key2 also .. welches bitmuster findet sich jetzt in REPEAT_MASK gruss klaus
0x01 ein Mal nach links geschoben: 0x02 --> 00000010 wenns nen byte ist. 0x01 zwei mal nach links geschoben: 0x04 --> 00000100 wenns nen byte ist. 0x02 XOR 0x04 = 0x06 --> 00000110 wenns nen byte ist. Das alles natürlich nur dann, wenn das Schieben eine höhere Priorität hat als das XOR.
Bitmanipulation EDIT: 0b00000010 ^ 0b00000100 = 0b00000110 Andere Schreibweise #define REPEAT_MASK ((1<<KEY1)|(1<<KEY2))
Klaus De lisson schrieb: > hallo, > > kann mir jemand kurz schreiben, was folgendes bewirkt: Aber nur sehr kurz a ^ b ist die Exklusiv-Oder bitweise Verknüpfung von a und b > also .. welches bitmuster findet sich jetzt in REPEAT_MASK Das von ( (1<<KEY1) exor (1<<KEY2) ) und da sich in diesem Fall die Bits nicht überlappen, ist das äquivalent zu einer Oder-Verknüpfung.
danke .. das war schonmal super und ist damit geklärt. gruss klaus
Klaus De lisson schrieb: > danke .. > das war schonmal super Eigentlich nicht. Eigentlich sind das Grundlagen, die in jedem C-Buch stehen. Eine Grundlage von noch mindestens 300 weiteren, die alle in einem C-Buch zusammengefasst sind
Klaus De lisson schrieb: > #define REPEAT_MASK (1<<KEY1^1<<KEY2) // repeat: key1, key2 Ich frage mich, ob nicht eigentlich das hier gemeint ist: #define REPEAT_MASK ((1<<KEY1) | (1<<KEY2)) also statt der XOR-Verknüpfung die bitweise Oder-Verknüpfung. Man sollte sich angewöhnen, genau das zu programmieren, was man meint, und nicht irgendwas anderes, was nur zufällig im vorliegenden Fall dasselbe Ergebnis liefert.
@ karl heinz, >Eigentlich nicht. >Eigentlich sind das Grundlagen, die in jedem C-Buch stehen. >Eine Grundlage von noch mindestens 300 weiteren, die alle in einem >C-Buch zusammengefasst sind im prinzip gebe ich dir recht. nur leider möchte ich C garnicht lernen. ich versuch mich nur durch so einen 10 zeiler durchzuackern um diesen in asm nachzubilden. aufgrund der schreibweise von C ist das sehr schwierig für mich obwohl ich natürlich so eine liste "operatoren in C" zu rate ziehe. da fällt es einem von euch viel leichter und geht wohl schneller als diese zeilen zu schreiben. gruss klaus
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.