计算机负数加法运算
计算机负数相加
-1 = 1111 1111
-2 =1111 1110
+----------------------
= 1111 1101 补码为0000 0011 以补码形式
#include<stdio.h>
#include<string.h>
int main(void)
{
unsigned j = 10;
int i = -20;
printf("%ud\n",i + j);
(i + j > 10000) ? (printf(">10000")) : (printf("<10000"));
printf("\n");
return 0;
打印结果是 -10 >10000
int i = -20;
unsigned j = 10;
i + j的结果为什么是-10呢?负数加无符号整数结果不应该默认为无符号数吗?
无符号数和有符号数比较,默认将无符号数转为有符号数,因为负数在内存中以补码形式存在
比如-1 为1的补码1111 1111 转为无符号数为255