【问题标题】:How to get the last n digits of a hexadecimal number? [closed]如何获取十六进制数的最后 n 位? [关闭]
【发布时间】:2015-07-04 23:33:10
【问题描述】:

我需要一种非常短的方法来提取十六进制数字的最后 4 位。所以0x2479c 的输入应该抛出0x479c 的输出。我想避免转换和重新转换为二进制。

通常适用于十进制数的模除法在这种情况下不起作用。

0x2479c  modulo 0xffff = 0x479e 

这是不正确的。我正在努力实现这是c/c++。

【问题讨论】:

  • 看起来您将按位“和”与模数混淆了。
  • 我投票结束这个问题,因为它是关于小学数学的。
  • % 替换为&
  • @TheParamagneticCroissant,从什么时候开始按位和介绍小学数学?
  • @FrédéricHamidi 说真的,为了正确回答这个问题,您甚至不需要按位和任何地方提及。用0x10000 取余数与用0xffff 进行AND-ing 效果一样。

标签: c++ hex modulo


【解决方案1】:

您应该使用掩码,然后按字节使用“and”和其他值。在你的情况下:

0x2479c & 0x0ffff

【讨论】:

  • s/should/could/g0x10000 的模除法同样有效。
  • @CaptainObvlious 是的,谢谢你编辑!
【解决方案2】:

使用面具

0x2479c & 0x0ffff

或模运算符

0x2479c % (0x10000);

你在模数的操作数中偏离了一个。

【讨论】:

    猜你喜欢
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多