>>10
Cで数値をBool値(True/False)として扱う場合は
0ならFalse、0以外ならTrueと定義されているだけで
別に0の否定、すなわちTrueが1だとは決まっていない
まぁ3の否定が0だというのは正しいが