首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将未知大小的二进制数中的所有位都设置为'1‘?

如何将未知大小的二进制数中的所有位都设置为'1‘?
EN

Stack Overflow用户
提问于 2009-05-04 01:46:18
回答 6查看 36.1K关注 0票数 23

我正在尝试用汇编语言编写一个函数(但对于这个问题,假设语言是不可知的)。

如何使用按位运算符将传入数字的所有位都设置为1?

我知道我可以对我想设置的位掩码使用按位“或”,但我不知道如何根据N大小的二进制数字构造掩码。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-05-04 01:49:02

~(x & 0)

X&0将始终为0,而~将所有位翻转为1。

票数 67
EN

Stack Overflow用户

发布于 2009-05-04 01:51:51

将其设置为0,然后使用逐位NOT将所有位反转为1。

票数 7
EN

Stack Overflow用户

发布于 2009-05-04 02:25:58

你会发现在汇编语言中,你必须知道“传入数”的大小。在汇编语言中,真正重要的是汇编语言是针对哪台机器的。

根据这些信息,您可能会问

  • 如何将整数寄存器设置为全部为1位?

  • 如何用全部1位填充内存中的区域?

要用全1位填充寄存器,在大多数机器上,有效的方法需要两条指令:

  1. 使用特殊用途的clear指令清除寄存器,或加载立即数0,或对寄存器本身执行xor操作。
  2. 获取寄存器的逐位补码。

用1位填充内存,则需要1条或更多存储指令...

你会在Hank Warren的一本精彩的书Hacker's Delight中找到更多的小窍门和技巧。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/818535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档