在gcc中內嵌了兩個位運算的函式,但在vc中並沒有這兩個函式(有相似函式)。
//返回前導的0的個數。
int __builtin_clz (unsigned int x)
//返回後面的0個個數,和__builtin_clz相對。
int __builtin_ctz (unsigned int x)
這兩個函式在radix tree中直接計算索引,對效能有一定要求。
自己寫有些效率問題不是很理想,所以想確定vc2015 版本中是否有帶已經優化過的函式。
在網上兜了一圈,沒有找到類似vc實現的**。折騰了半天沒找到解決方案,後來到csdn上發了個貼解決問題。
_bitscanforward()
[ref]:
_bitscanreverse()
[ref]:
有64位版本的處理,需要處理一下就和gcc中得到相同結果
下面簡單實現這兩個函式。把這兩個測試**貼出來供遇到同樣問題的人提幫助。
輸出的值和gcc版本是一致的,可直接使用。
//#include "stdafx.h"
#include using namespace std;
__inline int __builtin_clz(int v)
}__inline int __builtin_ctz(int v)
}
int main()
printf("\n");
// ctz
printf("__builtin_ctz:\n");
for (int i = 0; i < 32; i++)
return 0;
}
VC中的常用的20個方法
一 開啟cd rom mcisendstring set cdaudio door open wait null,0,null 二 關閉cd rom mcisendstring set cdaudio door closed wait null,0,null 三 關閉計算機 osversioninf...
VC中的常用的20個方法
vc中的常用的20個方法 一 開啟cd rom mcisendstring set cdaudio door open wait null,0,null 二 關閉cd rom mcisendstring set cdaudio door closed wait null,0,null 三 關閉計算機...
gcc和vc編譯器在語法上的比較
1 宣告64位資料型別 gcc long long vc int64 2 switch語法中的case語句 gcc case 0 9 vc case 0 case1 3 暫存器變數的作用範圍 gcc 可以把register變數宣告為全域性或區域性的 vc 只能是區域性變數 4 有符號和無符號整形 g...