Programmieren mit Bitoperatoren

Jedem Programmierer sollten wohl logische und arithmetische Operationen hinlänglich bekannt sein – muss man sie doch nahezu in jedem kleinsten Script heutzutage verwenden. Ein wenig unbekannt, gar mysteriös erscheinen dagegen so manche Operatoren abseits von Addition, Subtraktion, Multiplikation, Division sowie Konjunktion (und), Disjunktion (oder), Antivalenz (Exklusiv-oder) und Negation (nicht). Gemeint sind die bitweisen Operationen, welche vor allem in der Maschinen-nahen Programmierung mittels Assembler gang und gäbe sind. Benannt sind diese in Assembler erstaunlicherweise genauso, wie die logischen Operatoren häufig auch in höheren Programmiersprachen benannt wurden, nämlich AND, OR, NOT und XOR (viele Sprachen akzeptieren für die logischen Verknüpfungen auch mehrere Varianten – z.B. in PHP ist sowohl && wie auch AND), was letztendlich mit Sicherheit nicht gerade zur Entwirrung der Thematik beiträgt. Der folgende Artikel soll es aber einmal versuchen, Licht ins Dunkel zu bringen sowie auch den einen oder anderen Vorteil darzulegen. Voraussetzung für das Verständnis der folgenden Inhalte sind jedoch Grundkenntnisse der Aussagenlogik.

Was machen denn nun die Bit-Operatoren anders?
Ganz einfach: Die üblichen logischen Operatoren sind lediglich auf dem Wertebereich der boolschen Werte definiert und bilden auch nur auf selbige ab. Die bitweisen Operatoren dagegen stellen Funktionen, die vom Integer-Wertebereich (32 Bit) auf selbigen abbilden. Hierbei betrachtet man lediglich die Binärdarstellungen der Zahlen und wendet die Operationen auf jedes einzelne Zeichen (Bit) an. Ein Beispiel: 42 & 12 = 8, denn:

  00101010 (42)
& 00001100 (12)
---------------
  00001000 (8)

Weitere bitweise Operatoren sind häufig neben & (und) auch | (oder), ~ (nicht) und ^ (xor).

Rechnen wir damit mal ein paar Beispiele:
Oder: 42 | 12 = 46

  00101010 (42)
| 00001100 (12)
---------------
  00101110 (46)

Exklusives Oder (Entweder… oder): 42 ^ 12 = 38

  00101010 (42)
^ 00001100 (12)
---------------
  00100110 (38)

Sind das schon alle?
Nein, es gibt tatsächlich noch weitere, die über die Semantik der logischen Operationen hinausgehen. So gibt es ebenfalls noch die sogenannten Bitschiebebefehle. Hierbei werden lediglich die einzelnen Ziffern in der Binärdarstellung um eine angegebene Anzahl von Stellen nach rechts (>>) bzw. links (<<) verschoben. Dies entspricht letztendlich arithmetischen Operationen, genauer genommen der Multiplikation bzw. Division der jeweiligen Zahl mit einer Potenz von 2. Ein weiteres Beispiel: 43 >> 2 = 10, denn:

00101011 >> 2
-------------
00001010

Und was macht man damit?
Die Anwendung dieser Operatoren lässt sich zumeist auf die Arbeit mit Bitmasken einsetzen. Diese finden vor allem bei der Arbeit mit Dateien und Verzeichnissen in UNIX-Betriebssystemen ihren Einsatz – genauer gesagt bei der Definition der Zugriffsrechte. Hier repräsentiert eine zumeist 9 bit-Zahl Lese-, Schreib- und Ausführrechte des Nutzers, der Gruppe und der restlichen Welt. Mithilfe bitweiser Operatoren lassen sich diese wunderbar verändern, beispielsweise um zusätzlich der Gruppe zu erlauben, die Datei zu lesen, könnte so aussehen:
alter Wert | 000100000 = neuer Wert.
Auch in anderen Bereichen werden solche Bitmasken manchmal verwendet. So besitzen manche Funktionen, die zumeist schon standardmäßig in den Programmiersprachen enthalten sind, einen (optionalen) Parameter “Flags”, der ebenfalls eine Bitmaske erwartet und diverse zusätzliche Optionen für die Ausführung der Funktion definiert.

Des Weiteren kann man herausfinden, an welcher Stelle in der Binärdarstellung einer Zahl sich eine 0 oder eine 1 befindet.
So lässt sich beispielsweise wie folgt testen, ob an der zweiten Stelle von rechts einer Integerzahl i die Ziffer 1 steht.

if(i & 2 != 0)
{
     print("juhu!");
}

Damit wären wir auch schon wieder am Ende dieses kleinen Einblicks in die kleine Welt der Bits und bitweisen Operatoren. Wir hoffen, dass dieser Eintrag dem einen oder anderen helfen konnte. Sollten dennoch weiterhin Fragen offen bleiben, können diese gerne in den Kommentaren gestellt werden.

10 Kommentare
  1. 7STAR娛樂城提供百家樂、老虎機、今彩539、天天樂、運彩賽事、德州撲克、麻將技巧、大樂透、電子競技、賓果、四星彩、威力彩,娛樂城推薦評價,最優惠的娛樂城體驗金。

    Antworten
    9. April 2024, 12:32
  2. 七星娛樂城提供百家樂破解、百家樂賺錢、百家樂預測、百家樂算牌、技巧、規則、歐博、沙龍、dg、wm、真人線上百家樂推薦遊戲試玩,教學打法的介紹,補牌程式贏錢。

    Antworten
    9. April 2024, 12:32
  3. 7星娛樂城提供老虎機技巧、老虎機訣竅、老虎機攻略、老虎機介紹、老虎機破解、雷神之鎚、魔龍傳奇、拉霸機遊戲、金猴爺老虎機、捕魚機,cq9試玩尋找出好贏的熱門遊戲。

    Antworten
    9. April 2024, 12:32
  4. 銀河S娛樂城提供百家樂、老虎機、今彩539抓牌攻略、天天樂、運彩賽事、德州撲克、麻將技巧、大樂透、電子競技、賓果、四星彩、威力彩,娛樂城推薦評價,最優惠的娛樂城體驗金

    Antworten
    1. Juli 2024, 16:55
  5. 谷哥六合彩提供了超多彩球遊戲的知識及攻略,像是今彩539、威力彩、美國天天樂、香港六合彩等,想的到的通通都有,還不趕快來加入!

    Antworten
    1. Juli 2024, 17:02
  6. SC太陽城娛樂城秉持匠人之心不斷研發創新推出更多款老虎機款式,包刮雷神之槌、魔龍傳奇、戰神賽特,並提供老虎機技巧、老虎機訣竅、老虎機攻略、老虎機介紹、老虎機破解等文章。

    Antworten
    2. Juli 2024, 16:09
  7. 龍富娛樂城是一個提供豐富線上娛樂選擇的平臺,涵蓋真人娛樂、電子遊戲及體育博彩等。以其高品質的遊戲體驗和可靠的客戶服務受到玩家的青睞,龍富娛樂城致力於為用戶提供安全、愉快的娛樂環境,是享受線上遊戲的理想選擇。

    Antworten
    龍富娛樂城
    13. September 2024, 13:09
  8. 百家樂看法因人而異,一些玩家認為遊戲主要依賴運氣,投注莊家或閒家通常是穩妥的選擇;另一些則關注策略和統計方法,試圖提高勝率。無論哪種看法,保持理性投注和合理的資金管理都是遊戲成功的關鍵。了解不同觀點有助於制定適合自己的遊戲策略。

    Antworten
    百家樂看法
    13. September 2024, 13:10
  9. 五龍爭霸老虎機是一款充滿中國風格的老虎機遊戲,玩家將體驗到五條神龍爭奪獎金的刺激。遊戲擁有豐富的免費旋轉和高額獎勳機制,每一次旋轉都可能帶來驚喜。其精美的圖形和動感的音效增添了遊戲的娛樂性和挑戰性。

    Antworten
    五龍爭霸老虎機
    13. September 2024, 16:57
  10. 龍富娛樂城是一個受到廣泛好評的線上娛樂平台,提供多樣化的遊戲選擇,如老虎機、桌面遊戲和真人賭場。平台以其高品質的服務和豐富的獎勳活動吸引了大量玩家,讓他們享受刺激的遊戲體驗並有機會贏取豐厚的獎金。

    Antworten
    龍富娛樂城
    13. September 2024, 16:58

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*