我正在尝试编写自己的C楼功能。我坚持这个代码细节。我只想知道如何将unsigned int的底部n位清零。
例如,要将51.5舍入到51.0,我需要将最后18位归零,并保持前14位。因为它是一个底层函数,我想制作一个掩码将底部清零(23减去指数)浮点表示中的位。我知道如何为这样的个别情况制作面具,但我不知道如何对它进行编码以使其适用于所有人。请帮忙。
答案 0 :(得分:8)
更简单的方法是这样做:
value = (value >> bits) << bits
因为左移将用零填充,而不是在那里。
答案 1 :(得分:3)
将数字左移N位。减去一个。反转位。并且需要掩盖的数字。
1 << 14 = 00000000000000000010000000000000
-1 = 00000000000000000001111111111111
~ = 11111111111111111110000000000000
使用此and
时,掩码中的1将保留输入,掩码中的0将结果设置为0.