zoukankan      html  css  js  c++  java
  • _BitScanForward, _BitScanForward64

    _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 <iostream>
     2 #include <intrin.h>
     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     else
    21     {
    22         cout << "No set bits found.  Mask is zero." << endl;
    23     }
    24     return 0;
    25 }
  • 相关阅读:
    KMP算法
    快速排序的三种分区方法
    广义表
    外部排序(败者树、置换-选择排序、最佳归并树)
    内部排序
    散列表
    B树和B+树
    查找(顺序、折半、分块)
    关键路径
    拓扑排序
  • 原文地址:https://www.cnblogs.com/JeroZeng/p/4134703.html
Copyright © 2011-2022 走看看