C++找到二进制数的最高有效位
C++ finding most significant bit of a binary number?
我已经做了一些挖掘,但我还没有找到我的问题的解决方案。我想取一个十进制数并将其转换为位。然后我想分析位并确定最高位。例如,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 位的任何数字。
假设:仅限无符号数字
要计算数字的MSB,您需要知道有多少位代表数字的整数部分。
如果你的数字大于或等于 (2^n/2),其中 n 是整数部分的位数,那么您的 MSB 将为 1,否则为 0
请验证假设,有符号整数的逻辑会略有不同,不动点浮点数的浮点数甚至更复杂
相关文章:
- visual在c++中将十进制数转换为二进制数
- 二进制数之和(使用C样式字符串)
- 浮点数为 32 位和 64 位二进制表示形式
- 如何在整数中找到最低有效位(LSB)的位置?c ++
- 从两个 4x64 位整数数组中获取取模
- 如何有效地找到数组中三元组和的最小差异?
- 以 10 c++ 为基数显示 1024 位二进制数
- 二进制数和位标志'x'
- C++ 二进制数到整数值的数组
- 二进制数组中最大连续 1 的起始和结束索引,以 C++ 为单位
- dev如何在C++中比较二进制数
- 使用位黑客反转二进制数
- 对C++中二进制数的1中设置的位进行计数
- C++和溢出位中的二进制数之和
- C++找到二进制数的最高有效位
- 如何使用 testBit 函数检查二进制数组中的特定索引位
- 比较两个二进制数,得到不同的位
- 在c++中有效地管理数组二进制堆句柄
- 位操作-使用逐位生成二进制数(C++)
- 在c++数组中存储3位二进制数