首页 > 代码库 > C语言有符号和无符号之间的转换

C语言有符号和无符号之间的转换

无符号数:不存在正负之分,所有位都用来表示数的本身。

有符号数:最高位用来表示数的正负,最高位为1则表示负数,最高位为0则表示正数。

1.无符号数--->有符号数

看无符号数的最高位是否为1,

如果不为1(为0),则有符号数就直接等于无符号数;

如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。

2.有符号数--->无符号数

看有符号数的最高位是否为1,

如果不为1(为0),则无符号数就直接等于有符号数;

如果有符号数的最高位为1,则将有符号数取补码,得到的数就是无符号数。

总结:

有符号数与无符号数之间的转换,都要看要转换的数的最高位是否为1。

如果不为1,则转换结果就是要转换的数的本身;

如果为1,则转换结果就是转换的数(看作是负数)的补码。

 

C语言有符号和无符号之间的转换