2

我已经进行了一些挖掘,但我还没有找到我的问题的解决方案。我想取一个十进制数并将其转换为位。然后我想分析这些位并确定最高位。例如,8 表示为二进制的 1000。最高有效位在 2^4 位置。我找到的最好的解决方案是做类似的事情

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 位的数字。

4

1 回答 1

0

假设:仅无符号数

要计算数字的 MSB,您需要知道有多少位表示数字的整数部分。

如果您的数字大于或等于 (2^n/2) 其中 n 是数字整数部分的位数,那么您的 MSB 将为 1 否则将为 0

请验证假设,有符号整数的逻辑会略有不同,定点浮点数的浮点数会更复杂

于 2016-03-08T03:22:01.980 回答