笔记:lowbit()
Posted Piddnad 的 Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记:lowbit()相关的知识,希望对你有一定的参考价值。
因为CodeForces 437B这道题,接触到了lowbit。
先写一下函数:
int lowbit(int x) { return x&(-x); }
以及原题上给出的定义:
lowbit(x) equals 2k where k is the position of the first one in the binary representation of x. For example, lowbit(100102) = 102, lowbit(100012) = 12, lowbit(100002) = 100002 (binary representation).
很易懂,就是二进制形式从右边数到第一个1,该位所代表的2的幂。
函数的原理是计算机的补码,即(假设8位)
1 & -1 0000 0001 & 1111 1111 = 1
4 & -4 0000 0100 & 1111 1100 = 2
5 & -5 0000 0101 & 1111 1011 = 1
以上是关于笔记:lowbit()的主要内容,如果未能解决你的问题,请参考以下文章