我正在从头开始实现 2D 相关代码,我有一个简单的 unsigned char 类型的 3x3 图像矩阵:
unsigned char Image = [184 0 35
48 107 193
29 166 32]
我的相关内核
Kernel = [-1 0 1]
现在,当我执行相关时,第一行的结果在数学上是 -149,但打印结果是 107(2 的补码)。
unsigned char res = -1.F *(Kernel[i-1]) + (Kernel[i+1]);
这不是一个错误吗?如何将结果保存为 -149 但类型仍为 unsigned char?
我知道我的问题可能不合适,因为 unsigned char 的范围是 0 到 255,但我想确定我是否遗漏了什么。我也知道负数被转换为 2 的补码。
顺便说一句,这不是任何作业,我只是从图像处理的角度研究 C/C++。
最佳答案
How can I save the result as -149 but the type still remains as unsigned char?
不要这样做。使用带符号的整数类型。
如果增加的内存使用量不是问题,请使用 int
。
如果失败,请使用 short
。
关于c++ - unsigned char 类型的负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35589971/