计算机负数加法运算

计算机负数相加

-1 = 1111 1111 

-2 =1111 1110

+----------------------

 =  1111 1101 补码为0000 0011 以补码形式

 

 

 

 


#include

#include

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

 

 

你可能感兴趣的:(计算机负数加法运算)