![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位
qq_40178082
这个作者很懒,什么都没留下…
展开
-
chapter 3-6
在2004年3月14日,Keith H. Duggar向我发送了上述的专利变体,它优于我最初想出的这个表达式,r = (+1 | (v >> (sizeof(int) * CHAR_BIT - 1))) * v,因为没有使用乘法。这种方法之所以有效,是因为如果 x < y,则 -(x < y) 将全部是1,所以 r = y ^ (x ^ y) & ~0 = y ^ x ^ y = x。否则,如果 x >= y,则 -(x < y) 将全部是0,所以 r = y ^ ((x ^ y) & 0) = y。原创 2023-10-29 17:21:33 · 69 阅读 · 0 评论 -
2. Compute the sign of an integer
上面的最后一个表达式等同于对于32位整数,sign = v >> 31。这比明显的方法sign = -(v < 0) 快一次操作。这个技巧的原因是,当有符号整数向右移位时,最左边的位的值被复制到其他位上。最左边的位在值为负时为1,否则为0;所有的1位得到-1。不幸的是,这种行为是与体系结构相关的。原创 2023-10-29 16:44:28 · 596 阅读 · 0 评论 -
C/C++位操作
https://graphics.stanford.edu/~seander/bithacks.html#DetectOppositeSigns原创 2023-10-29 15:51:08 · 34 阅读 · 0 评论