我有二进制数(32/64位长),我想向左移动,以便前导有效位消失。所有二进制数都有不同的长度。所以我找不到一个简单的方法。
以下是一些例子。左侧是左移之前和右侧的二进制数:左移后的二进制数:
00000000000000000000000000101011011 -> 01011011000000000000000000000000000
00000000000000000000100010110111011 -> 00010110111011000000000000000000000
00000000000000000000000000000100110 -> 00110000000000000000000000000000000
00000000000000111000101010101100010 -> 11000101010101100010000000000000000
如何在C中做到这一点?
答案 0 :(得分:-3)
uint64_t number;
for(int i = 0; (i < 64) && (number & 0x8000000000000000) == 0); i++)
{
number <<= 1;
}
number <<= 1;
这是64位数值的一种方法;
固定。