计算设置的位数

2023-11-24

我想计算设置的二进制数中的位数。 例如,用户输入数字 97,二进制表示为 01100001。该程序应该告诉我 3 位是使用 MIPS ISA 设置的。

我能够用 C 实现这一点,但我不知道如何使用汇编代码实现它。


您要查找的内容通常称为人口计数 (popcount)。

上面有很多 C 实现位摆弄黑客(其中一些非常聪明)。如果您熟悉 C,每种方法在分解表达式后都应该有一个合理的 MIPS 汇编转换。

如果您的输入域很小(例如 0-255),您始终可以执行查找表并使用输入作为偏移量来直接获取 popcount。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算设置的位数 的相关文章

  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的
  • AVX-512 指令编码 - {er} 含义

    在 Intel x86 指令集参考中 有许多 AVX 512 指令在指令中具有可选的 er 例如 VADDPD 的一种形式定义为 EVEX NDS 512 66 0F W1 58 r VADDPD zmm1 k1 z zmm2 zmm3 m
  • 设置 IRQ 映射

    我正在遵循一些教程和参考文献来尝试设置我的内核 我在教程中遇到了一些不熟悉的代码 但根本没有解释它 这是我被告知映射的代码16 IRQs 0 15 到 ISR 地点32 47 void irq remap void outportb 0x2
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • GCC的sqrt()编译后如何工作?使用哪种root方法?牛顿-拉夫森?

    只是对标准感到好奇sqrt 来自 GCC 上的 math h 我自己编码的sqrt 使用牛顿拉夫森来做到这一点 是的 我知道 fsqrt 但CPU是如何做到这一点的呢 我无法调试硬件 现代 CPU 中的典型 div sqrt 硬件使用 2
  • 如何使用 Bochs 运行汇编代码?

    我想使用 Bochs 作为 8086 模拟器 是否有捷径可寻 我想要的是类似 emu8086 的东西 http www emu8086 com http www emu8086 com 如果程序的初始部分适合 512 字节 并且您不介意将自
  • 错误 LNK2019:函数 main 中引用的外部符号无法解析

    我正在尝试在 C 中运行我的简单汇编代码 我只有两个文件 cpp 文件和 asm 文件 编译时出现错误 见下文 如果有人可以提供帮助 我将不胜感激 这是我的 main cpp 文件 include
  • 高效memcspn

    有谁知道 memcspn 函数的有效实现吗 它的行为应该类似于 strcspn 但在内存缓冲区中查找跨度 而不是在以 null 结尾的字符串中查找跨度 目标编译器是 VisualC 谢谢 卢卡 一种近乎最佳的实现 size t memcsp
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • movzbl(%rdi, %rcx, 1), %ecx 在 x86-64 汇编中意味着什么?

    我想我明白 movzbl rdi rcx 1 ecx 意思是 将零扩展字节移至长整型 并表示将 ecx 扩展为 32 位 但我不完全确定语法 rdi rcx 1 指的是什么 我在某处看到该语法指的是 Base Index Scale 但我找
  • 汇编器8086将32位数字除以16位数字

    我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw
  • IDA pro asm 指令更改

    我只是想知道我怎样才能 更改IDA视图A中的asm指令 如何编辑指令 对于 实例 jnz 到 jmp 如何插入新指令 call func1 调用 func2 插入到现有的 代码 我知道如何制作 diff 文件 我知道如何在我的 DLL 上应
  • 如何在WinMobile6上启用ARMv6非对齐访问?

    ARMv6 引入了一个很棒的功能 未对齐的内存访问 这使得代码中的某些事情变得更加简单和更快 但微软只在winCE6中提供了API 现在大多数 PDA 都基于 WinMobile6 基于 CE 5 x 默认情况下禁用未对齐访问 我尝试在 C
  • 比“add esp, 4”更小的指令

    又是我 我的程序中有很多 add esp 4 我正在尝试减小它的大小 是否有任何更小的指令可以替代 add esp 4 pop edx 或者您不介意破坏的任何其他整数寄存器 这就是现代编译器实际上所做的 https stackoverflo
  • x86 asm 图形设置的分辨率高于 640x480?

    我刚刚开始使用汇编语言 感觉像学习新东西 并且遇到了一些问题 到目前为止 我一直在浏览的所有教程都没有回答 或者太旧而无法知道 1 我尝试了一些搜索 也许我只是不知道正确的关键字 但我找不到用于更改屏幕分辨率等的图形模式的更新列表 我发现的
  • movsbl指令的作用是什么? [复制]

    这个问题在这里已经有答案了 我在网上搜索过 但找不到明确的示例来理解该指令的作用 因此 如果有人可以举一个例子 这对我来说将会非常有帮助 用符号从字节扩展到长字移动 在Intel语法中 该指令的助记符是MOVSX 当变量类型为 C 时 C
  • NASM:如何正确访问SSD驱动器?

    我需要使用 NASM 16 位代码访问 SSD 驱动器 访问普通硬盘时 需要设置寄存器AX DX CX来选择柱面 磁道 扇区 扇区数 AH 选择读扇区功能 DL 选择驱动器号 CH 选择气缸 DH 选择磁盘上的一侧 CL 选择步入正轨的部门
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使
  • 如何阅读英特尔操作码符号

    我正在阅读一些引用的材料Intel vol 2 SDM x86 手册 https www intel com content www us en developer articles technical intel sdm html关于汇编

随机推荐

  • MessageDialog ShowAsync 在第二个对话框上引发 accessdenied 异常

    我正在尝试在 Windows 8 中实现重试 取消对话框 该对话框第一次显示正常 但单击重试并再次失败时 我在调用 ShowAsync 时遇到访问被拒绝的异常 我不知道为什么 但奇怪的是有时代码工作正常 当我设置断点时我没有得到异常 这里真
  • 使用 Code First 对 3 个表之间的多对多关系进行建模

    我有以下 3 个实体 User Account Role 关系就像 一个用户可以拥有多个帐户 一个账户可以属于多个用户 每个用户在帐户中都有一个角色 有一些预定义的角色 在枚举 Roles 中定义 我到目前为止 public class U
  • 在 Heroku 环境中 POST 请求被视为 GET

    我有一个奇怪的案例 我有一个 RoR 应用程序 它提供了我从 Java 应用程序连接到的 REST API 我正在本地开发 RoR 并将其部署在 Heroku 环境中 不管如何 我尝试从 Java APP Mozilla REST 客户端等
  • 在 Python 中浏览文件和子文件夹

    我想浏览当前文件夹及其所有子文件夹并获取所有带有 htm html 扩展名的文件 我发现可以像这样确定一个对象是目录还是文件 import os dirList os listdir current directory for dir in
  • 如何在sql server中实现多列全文搜索?

    我正在尝试对我为其创建视图的两列实施全文搜索 VendorName ProductName 我有全文索引等工作 但实际查询是导致我出现一些问题的原因 我希望用户能够使用一些标准搜索约定 AND OR NOT 以及按 进行术语分组 这很好 但
  • 如何将具有相同类型项目的列表列表合并到单个项目列表?

    这个问题很混乱 但是通过下面的代码描述就清楚多了 List
  • 迭代器与 for

    在一次采访中有人问我使用迭代器比使用迭代器有什么优势for循环或使用有什么好处for循环迭代器 有谁可以回答这个问题吗 首先 for 循环有两种 它们的行为非常不同 一种使用索引 for int i 0 i lt list size i T
  • Django-Admin:来自 UserProfile 的 list_filter 属性

    我希望允许我的网站管理员在管理网站上过滤来自特定国家 地区的用户 所以自然的做法是这样的 admin py class UserAdmin django contrib auth admin UserAdmin list filter us
  • 使用iphone 5的后置麦克风

    我已经习惯了跟随code从麦克风传输音频的 I O 我想做的是想要选择后置麦克风进行录音 我读过将 kAudioSessionProperty Mode 设置为 kAudioSessionMode VideoRecording 可以完成这项
  • 如何在 yml 中获取我的配置值 - 使用 dropwizard (微服务) Jersey D.I @Injection?

    这是我的代码片段 这是我的 yml 文件 productionServer host production server amazonaws com publicIp xx xx xx xx privateIp xx xx xx xx us
  • 如何通过C#配置Outlook帐户?

    需要通过c 配置email 姓名 邮件服务器等 在不使用 Outlook Redemption 的情况下如何执行此操作 First 创建一个 PRF 文件 通过 NET 应用程序手动或动态 然后 要导入帐户 请使用命令行选项启动 Outlo
  • 为什么我们不将 .class 扩展名与“java”命令一起使用?

    为什么我们不给filename class之后归档java命令 而不是仅filename 假设我们要编译test java程序 然后我们运行javac test java 没关系 之后它会产生test class文件但运行我们运行的程序ja
  • 与 suPHP 一起实现登录

    如何设计类似登录的功能来使用 suPHP 的文件权限 例如 如果我有一个网站www example com以下两个用户有自己的主目录 每个用户都有一个 php 脚本test php and a validateUser php属于另一个用户
  • 在 MediaProjection 中完全隐藏安全视图 - android

    我正在使用 MediaProjection API 创建屏幕录像机应用程序 在我的应用程序中 我将停止按钮显示为一个小的覆盖窗口 我已将此视图保持安全 以便它不会出现在最终录制的视频中 此视图不会出现在最终视频中 但最终输出本身是一个黑色区
  • 使用服务主体访问 Azure Blob 存储

    我想通过使用活动目录服务主体的凭据从 python 访问私有 blob 存储 我知道这个相关问题如何在 python 中针对 Azure 存储 blob 对用户进行身份验证 这帮助我走到了这一步 但现在我陷入了困境 我可以进行身份 验证并获
  • 将结构传递给函数

    我是一名新 C 程序员 我想知道如何通过struct到一个函数 我收到错误并且无法找出正确的语法来执行此操作 这是它的代码 Struct struct student char firstname 30 char surname 30 st
  • Docker 撰写可执行文件在 $PATH 中找不到”:未知

    但我有问题 Dockerfile FROM python 3 ENV PYTHONUNBUFFERED 0 RUN mkdir code WORKDIR code COPY requirements txt code RUN pip ins
  • 使用 powershell 从 Outlook 获取今天的约会:不需要的结果

    我使用以下代码提取今天的约会 olFolderCalendar 9 ol New Object ComObject Outlook Application ns ol GetNamespace MAPI Start Get Date Add
  • switch 语句 - 字符串与 int

    我在事件处理程序中有这行 javascript var value event currentTarget value example 9 然后我在 switch 语句中使用它 switch value case 9 return 12 c
  • 计算设置的位数

    我想计算设置的二进制数中的位数 例如 用户输入数字 97 二进制表示为 01100001 该程序应该告诉我 3 位是使用 MIPS ISA 设置的 我能够用 C 实现这一点 但我不知道如何使用汇编代码实现它 您要查找的内容通常称为人口计数