1

我正在尝试编写自己的 C 楼函数。我被困在这个代码细节上。我只想知道如何将无符号整数的底部 n 位清零。

例如,要将 51.5 舍入到 51.0,我需要将底部 18 位清零,并保留顶部 14。由于它是一个底函数,我想制作一个掩码以将底部(23 减去指数)位从浮动表示。我知道如何为这样的个别情况制作面具,但我不确定如何对其进行编码以使其适用于所有人。请帮忙。

4

2 回答 2

9

一个更简单的方法就是这样做:

value = (value >> bits) << bits

因为左移将用零填充它,而不是那里的任何东西。

于 2013-02-10T07:01:41.947 回答
3

将一个数左移 N 位。减一。反转位。并使用您需要掩盖的数字。

1 << 14 = 00000000000000000010000000000000
     -1 = 00000000000000000001111111111111
     ~  = 11111111111111111110000000000000

当你and这样做时,掩码中的 1 将保留输入,掩码中的 0 会将结果设置为 0。

于 2013-02-10T06:58:37.420 回答