例如:000010011
将变为000100011
。
答案 0 :(得分:0)
这个(伪代码)怎么样:
x=Your Bit
y=10000000
While((x&y)==0)
{
y=>>1
}
x+y
仅当您的位不为0时才有效
答案 1 :(得分:0)
C ++,假设有符号int,O(n),其中n由最左边位的位置决定' 1'
#include <climits> // INT_MIN
int moveLeftmostLeft(int n)
{
if(n==0) return 0;
int flag = INT_MIN; // 1000 0000 ... 0000
while((flag&n)==0)
flag=(unsigned)flag>>1;
return n+flag;
}