【发布时间】:2020-03-04 03:23:58
【问题描述】:
我需要将十六进制数的最后 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
我正在使用十六进制数字。
问题:
- 我应该向右移动多少次才能去掉最后 6 位小数?
- 二进制还是十六进制的位移(除以 10)更快?
【问题讨论】:
-
右移 4 是除以 16,无论外部(字符串)表示发生在哪个数字系统中。
-
没有十进制或十六进制数字。只有数字。但是您可以表示十六进制、十进制、八进制、二进制或任何其他基数的数字。
-
您永远无法仅使用位移位除以十进制数。
-
@FredLarson 没问题,您必须移动
3.3219280948873623478703194294893901759...个位置 ;) -
我的电脑使用 BCD(二进制编码的十进制),所以我可以移位除以 10。