让我们拥有
int a, b, c; // may be char or float, anything actually
c = a + b;
让int类型表示为4个字节。假设a+b所需的位数比4个字节多1位(即,假设结果是1 00 ... 0(32个二进制零))。这将导致C = 0,并且我相信计算机的微处理器会设置某种溢出标志。在C中有任何内置方法可以检查这一点吗?
实际上,我正在构建一个长度为1024位的数字类型(例如,int是一个长度为32位的内置数字类型)。我尝试使用具有128个元素的unsigned char类型数组来完成此操作。我还需要定义这些数字的加法和减法操作。我已经编写了加法代码,但我在减法方面遇到了问题。我不需要担心获得负结果,因为我调用减法函数的方式始终确保减法的结果始终为正值,但是要实现减法函数,我需要以某种方式获取被减数的二进制补码,它本身是我的自定义1024位数字。
如果我的描述难以理解,我很抱歉。如果需要,我可以进一步说明。我包括了我的添加功能和不完整的减法功能的代码。 NUM_OF_WORDS
是一个常量声明为
#define NUM_OF_WORDS 128
如果您没有理解我的问题或代码的任何部分,请告诉我。
附注:我不知道如何在这个论坛上上传附件,所以我会引导您到另一个网站。我的代码可以在那里找到。
顺便说一句,我发现this
我打算将INT_MAX替换为UCHAR_MAX
,因为我的1024位数字由char类型(8位变量)数组组成
这个检查对所有情况是否足够?