c - 十六进制除以 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
我正在使用十六进制数字。
问题:
- 我要右移多少次才能去掉小数点后 6 位?
- 二进制或十六进制的位移(除以 10)更快吗?
解决方案
[所有数字十进制]
如果您(无论出于何种原因)需要使用位移将整数除以 10,则首先需要将要除以的整数转换为其BCD表示形式。
根据您是使用 BCD 还是打包 BCD,您需要右移 8 位或 4 位才能除以 10。
推荐阅读
- python - 跨使用基于相同服务的后端的多个域启用 SSO
- python-3.x - 令人困惑的行为解包包含非数字值的迭代
- node.js - mapDispatchToProps 是要走的路吗?
- python - 在 Python 中从 sys.stdin 导入 readline 的方法
- java - 执行接口返回值的验证
- mysql - 如何在 laravel 5.5 中只获取第二条重复记录?
- python - Spyder 在 tesorflow 中冻结运行会话
- flutter - 如何设计这样灵活的应用栏
- ios - 运行一系列短动画的最佳方式?
- reactjs - 如何将具有多个对象的状态数组作为参数传递给graphql突变?