c++ - unsigned char 类型的负数

标签 c++ c image-processing correlation

我正在从头开始实现 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/

相关文章:

c++ - C/C++ 中 >=、<= 与 <、>、== 操作的复杂性

c++ - 如何将 s.st_dev 转换为/sys/block/<name>

C 在函数中传递指针到指针

c++ - 边缘检测 - 不良检测

python - 将 2D 滤波器内核分解为 1D 内核

c++ - "Error: type name is not allowed"消息在编辑器中但在编译期间没有

c++ - C++ 中类似 GameMaker 的功能

c++ - 使用 C++ 模板类方法的 C 回调

c - 使用几个不同的函数

opencv - 谷歌测量应用程序如何在Android上运行?