当前位置: 首页 > 知识库问答 >
问题:

关于bsr和lzcnt的混淆

公西翼
2023-03-14

我对两个说明都有点困惑。首先,让我们放弃扫描值为0和未定义的/bsr或bitsize/lzcnt结果的特殊情况--这个区别很明显,不是我的问题的一部分。

让我们取二进制值0001 1111 1111 1111 1111 1111 1111 1111

lzcnt计数,bsr返回到位0(即lsb)的索引或距离。

如果CPU上没有可用的BMI,LZCNT如何模拟为BSR?或者在BSR的情况下位0是MSB?英特尔规范中的两个“代码操作”也不同,一个从左边计数或索引,另一个从右边计数或索引。

也许有人能对此有所了解,我没有CPU,没有BMI/LZCNT指令来测试返回BSR是否能以相同的结果工作(因为要扫描的值为0的特例从未发生)。

共有1个答案

黄景胜
2023-03-14

lzcnt给出前导零位的个数。bsr给出最高有效1位的位索引。因此,对于非零的情况,它们实际上做了同样的事情,只是结果的解释不同。因此,只需从31中减去BSR结果,就可以得到与lzcnt相同的行为,即lzcnt==(31-BSR)

 类似资料:
  • 关于MVP和MVVM的几点混淆 在问这个问题之前,我读了一篇关于MVP和MVVM的文章。(例如:http://martinfowler.com/eaadev/uiarchs.html) null 例如,富客户端应用程序将同时使用本地数据库和远程服务。 在业务层,有两种对象! 域对象,它是从我的本地数据库中读取的。 在MVP中,只有一个“模型层”,所以我可以在这个模型层中管理和存储domian对象和

  • 我正在阅读关于线程的oracle java教程,我看到了这个示例 当有人可能使用这些方法签入他们的代码时?thread.interrupt(标志)是静态的,所以通过上面的检查,我们实际上检查是否有任何踏面被中断了?即使是这样,根据教程,当线程通过调用静态方法thread.interrupted检查中断时,中断状态将被清除。或任何通过抛出InterruptedException退出的方法在这样做时将

  • 我正在测试

  • [免责声明:首先,我知道有很多关于drawable和mipmap文件夹的帖子,我读了很多] 在《Android Programming-The Big Nerd Ranch Guide》一书中有一个示例,其中我必须在上的一些文本旁边插入一个图标。对于更高分辨率的屏幕,包含多个大小的图标是有意义的。在他们的解决方案中,他们的所有图像都在许多不同的可绘制文件夹中,具有不同的图像分辨率大小。 然而,我对

  • 问题内容: 我正在使用a ,但是在发生碰撞时该方法的工作原理还没有得到一个直接的答案。 假设对象放置在相同的 键中 。它们存储在吗?它们是否被覆盖,以便仅存在该键中的最后一个对象存在?他们在使用其他碰撞方法吗? 如果将它们放在中,是否可以检索整个列表?如果不是,是否有其他 Java 内置地图可以在其中执行? 就我的目的而言,单独的链接将是理想的,就好像有冲突一样,我需要能够浏览列表并获取有关列表中

  • 我不知道为什么下面的代码运行得很好,没有< code>gcc错误(< code >-f strict-aliasing-Wstrict-aliasing = 1 )。 如果我遵循严格的别名规则: n1570,§6.5表达式 对象的存储值只能由具有以下类型之一的左值表达式访问: -与对象的有效类型兼容的类型, — 与对象的有效类型兼容的类型的限定版本, -与对象的有效类型对应的有符号或无符号类型的类