use*_*780 1 binary assembly bitwise-and
我正在尝试做
and eax, 0fh
Run Code Online (Sandbox Code Playgroud)
我知道0fh意味着15。从
and eax, 0fh
Run Code Online (Sandbox Code Playgroud)
我应该清除除最后 4 位之外的所有内容eax。我不明白你是如何得到 (32-4)=28 位 1 和 4 个 0 的。
15的二进制是1111(实际上15=8+4+2+1);添加填充零以达到 32 位( 的宽度eax),我们得到
00000000000000000000000000001111
Run Code Online (Sandbox Code Playgroud)
现在,如果您使用 eax 的内容执行二进制操作and,显然您会清除除最后 4 位之外的所有位eax,因为零“杀死”相应位置中的任何数字,而零则让它“生存”。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx AND
00000000000000000000000000001111
----------------------------------------
0000000000000000000000000000xxxx
Run Code Online (Sandbox Code Playgroud)