Znak negacji bitowej liczby to ~
.
Nie wiem, czy dobrze rozumiem, ale jeżeli chcesz sprawdzić identyczność bitu 1 zmiennej z bitem 4 rejestru, to można zrobić tak (to nie jedyne możliwe sposoby):
if (((zmienna & b00000001) && (rejestr & b00001000)) || ((!(zmienna & b00000001)) && (!(rejestr & b00001000))))
{
// Zmienna z maska traktowana jest jako zmienna boolean, identyczność bitów to ((prawda i prawda) lub (fałsz i fałsz))
}
if (((zmienna & b00000001) == ((rejestr & b00001000) >> 3)))
{
// porownianie liczbowe, przy czym druga liczbe nalezy sprowadzic poprzez nadanie stanu 0 lub 1 za pomoca przesuniecia bitowego
}
Chodzi o to, że są to tak naprawdę dwie liczby i albo obie są zerem, albo obie są różne od zera, przy czym ich wartość jest inna.
Natomiast porównanie negacji bitu rejestru z bitem zmiennej to tak naprawdę zaprzeczenie identyczności bitu z rejestrem, a więc zaprzeczenie powyższych warunków. Negacja zmiennej (zamiana wszystkich bitów na stan przeciwny) to ~zmienna
.