首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

无符号数相减解决方案

2012-05-14 
无符号数相减请教:typedef unsigned short int Uint16Uint16 a10Uint16 b20那么Uint16 c a-b得到655

无符号数相减
请教:
typedef unsigned short int Uint16;
Uint16 a=10;
Uint16 b=20;
那么Uint16 c= a-b得到65526,why,why?
short int d=a-b得到-10,so why??

请各位不吝赐教

[解决办法]
无符号数Uint16为16位2进制,
a=10,2进制表示为:00000000 00001010 ;
b=20,2进制表示为:00000000 00010100 ;
相减得 :11111111 1110110换成10进制就为65526。
而short型为16位有符号数,还有一个符号位,做加减的话就是和10进制直接加减答案相同。
[解决办法]
数字在内存里存储的都是以补码形式存储的!
正数的补码就是本身,负数的补码是其绝对值取反再加1.
理解完这个你应该就知道为什么了

热点排行