漂亮代码列表(CoolCode list)
这里是些聪明的C和C++的诀窍——我曾经试着坚持写那些的确比一般方法更快或者更紧凑简洁的代码——或者可能只是在页面中看起来很漂亮的代码——但是这只是私人收集,所以我会破例采用一些其他的,如果我确实很喜欢。
除非特别说明,否则下面提到的所有的变量都是无符号32位整型变量。
1、翻转一个32位字的所有位
我在一个Linux幸运饼干编程发现了这个
n = ((n >> 1) & 0x55555555) | ((n << 1) & 0xaaaaaaaa) ;n = ((n >> 2) & 0x33333333) | ((n << 2) & 0xcccccccc) ;n = ((n >> 4) & 0x0f0f0f0f) | ((n << 4) & 0xf0f0f0f0) ;n = ((n >> 8) & 0x00ff00ff) | ((n << 8) & 0xff00ff00) ;n = ((n >> 16) & 0x0000ffff) | ((n << 16) & 0xffff0000) ;
2、计算一个32位字中“1”的个数
John C. Wren十分友好的将这个算法发给了我。它看起来跟前一个算法惊人的相似。
n = (n & 0x55555555) + ((n & 0xaaaaaaaa) >> 1);n = (n & 0x33333333) + ((n & 0xcccccccc) >> 2);n = (n & 0x0f0f0f0f) + ((n & 0xf0f0f0f0) >> 4);n = (n & 0x00ff00ff) + ((n & 0xff00ff00) >> 8);n = (n & 0x0000ffff) + ((n & 0xffff0000) >> 16);
本文发布于:2024-02-02 14:22:23,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685494644388.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |