已知两个64位整型数据, 在x86计算机上实现其加减运算:
例一:
x = 0x 11111111 ff112222
y = 0x 10001111 ff000000
x+y = 0x 21112223 fe112222例二:
m = 0x 11111111 ff112222
n = 0x 10001111 00000000
m-n = 0x 01110000 ff112222
#include <stdio.h>
typedef unsigned int uint;
// 将64位以结构体的形式分为
// 高32位 + 低32位
typedef struct {
uint high;
uint low;
} int64;
// 加法
int64 add(int64 a, int64 b) {
int64 result;
uint carry;
// 先算后31位(防止溢出)
result.low = (a.low & 0x7fffffff) + (b.low & 0x7fffffff);
// 另算第32位(右移至最低位的作用:1防止溢出,2以便进位时高低段分配)
carry = ((result