Вы, вероятно, просто забыли инициализировать 'd', чтобы быть всеми 1, и он по умолчанию равен 0. Вы можете легко установить все биты в 1, назначив d = -1 или, если хотите, d = 0xffffffff, хотя, поскольку вы использовали только 4 бита, d = 0xF было бы достаточно.
При этом такие операторы с последовательным подключением имеют тенденцию быть менее читабельными, чем вспыхивать, как предлагали другие.