Skip to the content.

Lecture 3 Bit Hacks

课程内容

备注:以下并未列出课程全部内容,只是将我理解并觉得用处比较多的地方列了出来。

Binary Representation

虽然大家早已经知道了二进制原码、反码、补码的意思,不过这里提供了另一种解释方法。很有意思。这里记录下来。 设${x={x_{w-1}x_{w_2}…x_0}}$是一个w位的无符号整数,二进制表示为: \(x=\Sigma^{w-1}_{k=0}x_k2^k\) 有符号整数(补码)的表示是: \(x=(\Sigma^{w-2}_{k=0}x_k2^k)-x_{w-1}2^{w-1}\) 其中,${x_{w-1}}$是符号位。

Set the kth Bit

Clear the kth Bit

Toggle the kth Bit

Extract a Bit Field

Set a Bit Field

No-Temp Swap

No-Branch Minimum

Modular Addition

// 没有除法,无法预测的分支。 z = x + y; r = (z < n) ? z : z - n;

// use bit hack z = x + y; r = z - (n & -(z >= n));


## Least-Significant 1
- 【问题】计算x中最低有效位中的1的掩码。
``` c
r = x & (-x)

Population Count

TODO

英语学习