python数据类型导致的问题
计算过程中,uint8数据类型导致的算数溢出,注意计算过程中尽量保持数据类型为float型,避免算数溢出。
问题描述:
Cb和cr的数据类型为uint8(数值范围[0,255]),因此在计算过程中改变128的数据类型出现out_3和out_4结果相同,但是out_5和out_6结果截然不同。
下面是两组实验:
- 128的int型和float型对计算结果的影响,表达式out_3、out_4与out_5、out_6形式一致,但是out_3、out_4的结果相同,而out_5、out_6结果相差较大。
- 分析out_5和out_6的结果,发现out_5的结果恰好为+128的结果,因此考虑为数据类型导致的算数溢出问题,十进制负数的二进制等于十进制负数相反数的补码(反码加1)。
cr的数据 - 查看out_5和out_6的数据类型,进一步确定了是数据类型导致的问题。
问题的解决:
在运算的过程中,尽量保证数据不是uint8类型,而使用有符浮点型数据。