我正在从头开始实现二维相关代码,我拥有一个类型为 unsigned char 的简单 3x3 图像矩阵:
unsigned char Image = [184 0 35
48 107 193
29 166 32]
我的相关核心
Kernel = [-1 0 1]
现在,当我进行相关性计算时,第一行的结果在数学上为-149,但打印出来的结果是107(二进制补码)。
unsigned char res = -1.F *(Kernel[i-1]) + (Kernel[i+1]);
这是一个错误吗?我如何将结果保存为-149但仍保持类型为unsigned char? 我知道我的问题可能不太恰当,因为unsigned char的范围是0到255,但我想确保我没有错过什么。 我也知道负数被转换为二进制补码。
顺便说一下,这不是任何作业,我只是从图像处理角度研究C / C++。
char
表示。char
的范围限制为 -128..+127。请使用int
替代unsigned char
。 - Jabberwockyint
,因为char
大小也不够)。 - interjaychar
可以有更大的范围。另一方面,它可以是无符号的,因此根本没有负值。 - too honest for this site