C语言之unsigned int和int的运算

        首先先说明下:

1)数值在计算机中是以补码的形式存储的。同时如果两个补码相加时,最高位也就是我们的符号位如果有进位,是需要丢弃的。正数的补码是自己本身,

      负数的补码是符号位为1,其余位为该数绝对值的原码按位取反,然后整个数再加1.

2)如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。
double ←── float 高

long

unsigned

int ←── char,short 低

 

ok现在开始看几个例子:

例1:

int a=6;

unsigned int b=-20;

unsigned int c = a+b;

c是多少?

a:0x00 00 00 06

b:0xff ff ff ec   (0x00 00 00 14->取反0x ff ff ff eb->加1 0x ff ff ff ec)

c 的值为:0x ff ff ff f2 

例2:

int a = -6;

unsigned int b = 20;

unsigned int c = a+b;

c是多少

a: 0x ff ff ff fA

b:0x 00 00 00 14

c=0x00 00 00 0e;

 


 

阅读更多
个人分类: C语言学习
上一篇进程和线程
下一篇C语言之 ## __VA_ARGS__ 宏
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭