本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
16.16/26.6笛卡尔坐标系(Cartesian space coordinate)
前一段时间研究FreeType2字体库,其中对字体长度的描述使用的是32bit的整数,库文档对这些整数的描述有时说是基于16.16笛卡尔坐标有时说是基于26.6笛卡尔坐标,那么问题来了,什么是16.16/26.6笛卡尔坐标?如何换算成浮点数?
16.16/26.6笛卡尔坐标
16.16笛卡尔坐标是指坐标系中的坐标使用16bit表示整数部分,16bit表示小数部分
例如:
0x00028000 ≘ 2.5
(这里0x0002表示整数部分,0x8000表示小数部分)
同理26.6笛卡尔坐标是指坐标系中的坐标使用26bit表示整数部分,6bit表示小数部分
将整数换算成浮点数方法
对于16.16笛卡尔坐标转换成浮点数,我们可以将整数除以 2 16 2^{16} 216获得浮点值
例如:
1 << 16 = 0x00010000 ≘ 1.0
int(3.75 * pow(2.0, 16)) = int(245760.0) = 0x0003C000 ≘ 3.75
对于26.6笛卡尔坐标转换成浮点数,我们可以将整数除以 2 6 2^{6} 26获得浮点值