博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
_BitScanForward, _BitScanForward64
阅读量:4556 次
发布时间:2019-06-08

本文共 1299 字,大约阅读时间需要 4 分钟。

_BitScanForward(64)的使用得include头文件intrin.h unsigned char _BitScanForward(   unsigned long * Index,   unsigned long Mask);unsigned char_BitScanForward64(   unsigned long * Index,   unsigned __int64 Mask);

_BitScanForward(64)函数的作用是以2进制的形式从Mask的最低有效位(least significant bit)向最高有效位(most significant bit )搜索,直到找到1.

eg.  

  unsigned long index0, index1, index2;

  unsigned long mask0 =   1B;

  unsinged long mask1 =   100B;

  unsigned long mask2 = 1100B;

  _BitScanForward(&index0, mask0);

  _BitScanForward(&index1, mask1);

  _BitScanForward(&index2, mask2);

得到的结果是:

  index0 = 0; //因为1出现在第一位

  index1=index2 = 2;//100B和1100B的第一个1都是出现在第三位

note:在编程中计数都是从0开始,所以出现在第3位的1得到的结果是2.

1 #include 
2 #include
3 using namespace std; 4 5 #pragma intrinsic(_BitScanForward) 6 7 int main() 8 { 9 unsigned long mask = 0x1000;10 unsigned long index;11 unsigned char isNonzero;12 13 cout << "Enter a positive integer as the mask: " << flush;14 cin >> mask;15 isNonzero = _BitScanForward(&index, mask);16 if (isNonzero)17 {18 cout << "Mask: " << mask << " Index: " << index << endl;19 }20 else21 {22 cout << "No set bits found. Mask is zero." << endl;23 }24 return 0;25 }

 

转载于:https://www.cnblogs.com/JeroZeng/p/4134703.html

你可能感兴趣的文章
[C#] SHA1校验函数用法
查看>>
linux 下 VMware 提示Unable to change virtual machine power state:
查看>>
洛谷P1585 魔法阵
查看>>
线程 题待做
查看>>
PL/SQL可以连oracle,但是jdbc连不上 【转】
查看>>
使用 highlight.js 在网页中高亮显示java 代码 【原】
查看>>
[转]高颜值、好用、易扩展的微信小程序 UI 库,Powered by 有赞
查看>>
[转]SQL Server如何启用xp_cmdshell组件
查看>>
[转]微擎应用笔记3--manifest.xml文件使用说明
查看>>
Codeforces 1000C Covered Points Count 【前缀和优化】
查看>>
python高效读取文件、文件改写
查看>>
gulp
查看>>
pgsql查询优化之模糊查询
查看>>
不变模式
查看>>
matlab去云雾
查看>>
500lines项目简介
查看>>
Asp.net core logging 日志
查看>>
BOM浏览器对象模型
查看>>
Jq 遍历each()方法
查看>>
Android源码分析:Telephony部分–phone进程
查看>>