首页 > 解决方案 > 十六进制除以 10

问题描述

我需要将十六进制数字的最后 6 个小数位与数字的其余部分分开。

十进制除以 10 与十六进制右移 4 次 (x >> 4) 相同。我试图向右移动,但我从来没有得到正确的值。

Hex: 0x7A 11F8 5EE0
Dec: 524.297.500.000

我想将最后 6 位小数分隔成一个新变量:

524.297.500.000 -> 524.297
a = 524.297
b = 500.000
repeat time
    0x7A 11F8 5EE0 >> 4

我正在使用十六进制数字。

问题:

  1. 我要右移多少次才能去掉小数点后 6 位?
  2. 二进制或十六进制的位移(除以 10)更快吗?

标签: cmathdivision

解决方案


[所有数字十进制]

如果您(无论出于何种原因)需要使用位移将整数除以 10,则首先需要将要除以的整数转换为其BCD表示形式。

根据您是使用 BCD 还是打包 BCD,您需要右移 8 位或 4 位才能除以 10。


推荐阅读