【发布时间】:2015-07-04 23:33:10
【问题描述】:
我需要一种非常短的方法来提取十六进制数字的最后 4 位。所以0x2479c 的输入应该抛出0x479c 的输出。我想避免转换和重新转换为二进制。
通常适用于十进制数的模除法在这种情况下不起作用。
0x2479c modulo 0xffff = 0x479e
这是不正确的。我正在努力实现这是c/c++。
【问题讨论】:
-
看起来您将按位“和”与模数混淆了。
-
我投票结束这个问题,因为它是关于小学数学的。
-
将
%替换为&。 -
@TheParamagneticCroissant,从什么时候开始按位和介绍小学数学?
-
@FrédéricHamidi 说真的,为了正确回答这个问题,您甚至不需要按位和任何地方提及。用
0x10000取余数与用0xffff进行AND-ing 效果一样。