a != b
trueまたはfalseに相当する式です。Cには、とはありませんtrue
がfalse
、0は偽と見なされ、それ以外はすべて真と見なされます。などの式a != b
は、falseの場合は0を返し、trueの場合は1を返します。%dは整数を出力するためのフォーマット文字列であるため、printf()はこの0または1を出力します。
このコンテキストでは、aは0であり、bは反対側の式の獣です。("HELLO"[i/8] & 1 << (~i&7))
他の操作について少し詳しく説明します。
("HELLO"[i/8] & 1 << (~i&7))
明確にするために括弧を追加する必要があります。
(("HELLO"[i/8]) & (1 << (~i&7)))
(〜i&7)はiを取り、その中のすべてのビットを反転し、次にすべてのビットを7のビットで反転します。
(1 << (~i&7)))
1を取り、左にシフトして〜i&7の場所に移動します。
a & b
テイクa
とANDS
すべてのビットをb
。
いくつかのリンク:
http://en.wikipedia.org/wiki/Bitwise_operation
http://www.cprogramming.com/tutorial/bitwise_operators.html
http://msdn.microsoft.com/en-us/library/17zwb64t.aspx