我正在尝试编写自己的 C 楼函数。我被困在这个代码细节上。我只想知道如何将无符号整数的底部 n 位清零。
例如,要将 51.5 舍入到 51.0,我需要将底部 18 位清零,并保留顶部 14。由于它是一个底函数,我想制作一个掩码以将底部(23 减去指数)位从浮动表示。我知道如何为这样的个别情况制作面具,但我不确定如何对其进行编码以使其适用于所有人。请帮忙。
我正在尝试编写自己的 C 楼函数。我被困在这个代码细节上。我只想知道如何将无符号整数的底部 n 位清零。
例如,要将 51.5 舍入到 51.0,我需要将底部 18 位清零,并保留顶部 14。由于它是一个底函数,我想制作一个掩码以将底部(23 减去指数)位从浮动表示。我知道如何为这样的个别情况制作面具,但我不确定如何对其进行编码以使其适用于所有人。请帮忙。
一个更简单的方法就是这样做:
value = (value >> bits) << bits
因为左移将用零填充它,而不是那里的任何东西。
将一个数左移 N 位。减一。反转位。并使用您需要掩盖的数字。
1 << 14 = 00000000000000000010000000000000
-1 = 00000000000000000001111111111111
~ = 11111111111111111110000000000000
当你and
这样做时,掩码中的 1 将保留输入,掩码中的 0 会将结果设置为 0。