使十六进制数字更具可读性

问题描述 投票:0回答:1

我在程序中使用大十六进制数,并且经常浪费时间弄清楚数字的多少个位置。

我知道以10为底的数字,掌握数字大小的简单方法是乘以1000的方法:

// 15mhz clock
uint64_t clk_spd = 15 * 1000 * 1000;

但是有没有一种简单的十六进制分隔方法?我的问题是有效的,而不是这个:

// control register address
uint64_t reg_ctl_addr = 0x2400000000

我可以做这样的事情:

// control register address
uint64_t reg_ctl_addr = 0x24_0000_0000

我已经尝试在下划线,逗号,空格,甚至是0的组之间使用/**/,并且没有进行编译。

c readability
1个回答
0
投票

我们可以将乘以1000的规则扩展到以16为底。

“大跳”,由于缺乏更好的用语,在10进制中为1000。GHz= 1000 * MHz,依此类推。在16进制中,较大的跳跃为4位数字(不是4个左移)。 。 0x1-> 0x1000

因此,因为我们要4个移位,而1个移位是16的乘积,所以我们只需要乘以16 ^ 4

我们的代码变为:

// control register address
uint64_t ctl_reg_addr = 0x24 * 0x10000 * 0x10000;
© www.soinside.com 2019 - 2024. All rights reserved.