最接近2的力量
发布时间:2020-12-16 09:48:17 所属栏目:百科 来源:网络整理
导读:给定无符号整数a(小于或等于1024),我需要找到满足以下条件的数字p: 最低p = a p是2的幂 我确信有一个更好的解决方案,使用按位运算符. 你有更好的解决方案吗? unsigned int closest_pow2(unsigned int a){ if (a == 0 || a 1024) return 0; //error,never h
给定无符号整数a(小于或等于1024),我需要找到满足以下条件的数字p:
>最低p> = a 我确信有一个更好的解决方案,使用按位运算符. unsigned int closest_pow2(unsigned int a) { if (a == 0 || a > 1024) return 0; //error,never happen if (a == 1) return 1; if (a == 2) return 2; if (a <= 4) return 4; if (a <= 8) return 8; if (a <= 16) return 16; if (a <= 32) return 32; if (a <= 64) return 64; if (a <= 128) return 128; if (a <= 256) return 256; if (a <= 512) return 512; if (a <= 1024) return 1024; } 解决方法
以下是没有相对昂贵的条件语句或循环:
unsigned next_power_of_two(unsigned int x) { x = x - 1; x = x | (x >> 1); x = x | (x >> 2); x = x | (x >> 4); x = x | (x >> 8); return x + 1; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |