我已經做了一些挖掘,但我沒有找到我的問題的解決方案。我想要一個十進制數字並將其轉換爲位。然後我想分析這些位並確定最高位。例如,8以二進制表示爲1000。最重要的位是在2^4的位置。我發現的最佳解決方案是做類似C++找到二進制數的最重要的位?
int temp=8;
bitset<32> binary;
binary=temp;
int pos;
for (int i=32;i>=0;i--){
if (binary[i]==1) {
pos=i;
break;
}
}
但我想知道是否有更好的解決方案呢?有沒有辦法不包括前導零,只有二進制數爲1000而不是00 .... 1000? temp中的值可以是包含32位的任何數字。
是的,那個問題來自七年前。我想在過去的7年裏,逐位算術已經成爲一種失落的藝術...... –
對於任何uintXX_t,我都有一個C++演示準備就緒,它執行「二分搜索」式的工作。它在7個步驟中找到最重要的uint64_t位,並以4個步驟找出uint8_t位。返回一個int索引,不修改輸入,4個參數讓用戶選擇類型最短的工作。讓我知道你是否開了一個新問題。我很高興提交它.. –