我的需求:
对于任何非负 unsigned long a,
输入 a = 5; 答案应该是 3
输入 a = 12; 答案应该是 4
输入 a = 1; 答案应该是 1
输入 a=0 Ans 应该是 0
即从左边找到最重要的1个位置。
我试过的:
int count = 0;
if( a!=0 )
do{
count++;
}while( a >>= 1 );
问题 由于 while 循环和移位而需要更多时间。
建议的方法 如果我知道这 4 个字节是如何存储在内存中的,(使用 char*)我将取出包含最重要的 1 的字节,因此在最坏的情况下,最多 8 次移位就足以找到答案。