首页
社区
课程
招聘
[求助]记得之前见过一个位求和的指令,不知叫什么名字
发表于: 2013-12-29 12:40 7507

[求助]记得之前见过一个位求和的指令,不知叫什么名字

2013-12-29 12:40
7507
就是计算一个数有多少位为1
比如eax=1234
计算结果就是5
找了很久都找不到,莫非是我记错了?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 121
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
汇编我不会,不过前几天看过用位操作,不过随便看了一下代码,还未能理解呢。
2014-11-25 10:28
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
popcnt 指令序列0F B?来的?你查查intel手册
2014-11-29 01:02
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
4
可以用RCL这个移出去的交给CF 你可以判断cf来试试,
2014-12-26 21:57
0
雪    币: 39
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
也不知道。给楼主一个我比较喜欢的算法吧~~希望对楼主有帮助。
#include <stdio.h>

int main(int argc, char* argv[])
{
        int x;

        scanf("%d", &x);
        x = (x & 0x55555555) + ((x >> 1) & 0x55555555);
        x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
        x = (x & 0x0f0f0f0f) + ((x >> 4) & 0x0f0f0f0f);
        x = (x & 0x00ff00ff) + ((x >> 8) & 0x00ff00ff);
        x = (x & 0x0000ffff) + ((x >> 16) & 0x0000ffff);

        printf("%d\n", x);
        return 0;
}
2015-1-22 23:19
0
雪    币: 442
活跃值: (107)
能力值: ( LV9,RANK:350 )
在线值:
发帖
回帖
粉丝
6
有这样的指令吗?找到告我下哦
2015-4-17 07:13
0
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
依稀记得BSF比较类似
2015-4-17 08:48
0
雪    币: 441
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
没有这个指令,要算法的吧
2016-5-1 04:05
0
游客
登录 | 注册 方可回帖
返回
//