uint64 溢出问题在X86和MIPS下有不同的结果

X86 平台上做了如下测试代码:
uint64_t testdata[4]={40000,40100,40200,40300};
uint64_t epoch= 315964819;
for(int i=0;i<4;i++){
testdata[i]=testdata[i]-epoch;
printf("test1=%d",testdata[i]);
测试结果如下:
40000- 31596481900 =19999998DD45417B
40100- 31596481900 =19999998DD454185
40200- 31596481900 =19999998DD45418F
40300- 31596481900 =19999998DD454199
MIPS 做了运行了同样的测试代码,结果如下,有什么好的解释吗
40000- 31596481900 =19999998F3333333
40100- 31596481900 =19999998F3333333
40200- 31596481900 =19999998F3333333
40300- 31596481900 =19999998F3333333

x86和mips的字节序不同,x86是little endian

参考对应的CPU的技术手册。