Ok, hier noch p, q und r. Sind alle ints (ok, p ist per default meine ich signed ist aber hier(!) grad egal). Der vollständigkeithalber mal die 4 Bytes die die ints normalerweise groß sein dürften ausgeschrieben:
p wird auf z & q gesetzt, also das Ergebnis der logischen, bitweisen &-Operation. (erstmal alle Bytes ausgeschrieben, in der dritten Zeile das Ergebnis. Dann die XOR-Verknüpfung von z und 2, dann z um 2 Bits geshiftet.
z 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 1 1
q 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 1 0 1 0 1 0
z&q
p 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 1 0 = 2
z 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 1 1
2 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 1 0
z ^ 2
q 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 0 1 = 5
z 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 1 1 1
z << 2
z 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 | 0 0 0 1 1 1 0 0 = 28
Zu den Verknüpfungen/Operationen selber hab ich jetzt nichts geschrieben, schau mal ob du da durchsteigst, google mal logisches und, xor und bitshift, dann sollte das klarer werden. Und versuch möglichst mit C rum, solche Sachen sind Standard, sollte man halbwegs durchblicken ;-)