В 64-разрядной версии x86 у меня есть следующая инструкция:
and $0xf, %eax
Содержимое% eax до и после остается 4. Как это возможно? ANDing 100 & 1111 должно привести к 1100, что равно 12, а не 4.
100 & 1111
1100
С каких это пор 0100 & 1111 = 1100?
0100 & 1111 = 1100
0100 = 4 & 1111 = 15 ------ 0100 = 4
Думайте о 100 как 0100, и вы можете видеть, что 0100 & 1111 ясно 0100.
100
0100
0100 & 1111
Нет - вы делаете ошибку. 100 & 1111 = 100.