社区首页 >问答首页 >0fh是什么意思?问0fh是什么意思?ENStack Overflow用户提问于 2013-07-09 09:21:33回答 3查看 10.2K关注 0票数 1我正在试着做
代码语言:javascript复制and eax, 0fh我知道0fh的意思是15。从…
代码语言:javascript复制and eax, 0fh我应该清除eax的最后4位以外的所有内容。我不明白你是怎么得到(32-4)=28位的1和40的。
assemblybinarybitwise-and关注问题分享EN回答 3推荐最新Stack Overflow用户发布于 2013-07-09 09:25:22
15在二进制中是1111 (在事实15=8+4+2+1中);将填充零添加到32位(eax的宽度),我们得到
代码语言:javascript复制00000000000000000000000000001111现在,如果您使用eax的内容执行二进制and,显然您清除了eax的所有位,但最后4位除外,因为0“杀死”了相应位置中的任何数字,而1则让它“存活”。
代码语言:javascript复制 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx AND
00000000000000000000000000001111
----------------------------------------
0000000000000000000000000000xxxx收藏分享票数 4ENStack Overflow用户发布于 2013-07-09 09:26:16
你不会得到28个1比特,后面跟着4个0比特,这是相反的。0fh是:
代码语言:javascript复制000...0001111当你用1位and某个东西时,你会得到它。当你用0位and它时,你总是得到0(有关位运算符的论述,请参阅here )。
因此,使用000..001111对数字执行AND操作将清除除最右边的4位以外的所有位。
收藏分享票数 1ENStack Overflow用户发布于 2013-07-09 09:27:49
为简洁起见,让我们看一下下面的指令:
代码语言:javascript复制and al, 0fh0fh转换为二进制形式的00001111。
现在不管每一位中的x是什么,这是我们在二进制中得到的:
代码语言:javascript复制al xxxxxxxx
0fh 00001111
------------
and 0000xxxx具体示例:
代码语言:javascript复制al 01010101
0fh 00001111
------------
and 00000101收藏分享票数 1EN页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持原文链接:https://stackoverflow.com/questions/17538498
复制相关文章