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

关于有符号数与无符号数互转的有关问题

2013-11-05 
关于有符号数与无符号数互转的问题最近看别人的源码,看到有符号数向无符号数赋值的问题,如unsigned int s

关于有符号数与无符号数互转的问题
最近看别人的源码,看到有符号数向无符号数赋值的问题,
如unsigned int s = ( unsigned int )( -25 );
调试发现s的值是2^32 - 25。也就是unsigned int的最大值-1再加上有符号值。我用笔算了下,
自认为应该是将-25转为二进制补码,然后将此补码按照无符号数转回来即可,这里想向大家求证下是不是这样的。
另外,顺便问一下无符号数向有符号数转是怎样的,也一样是先转成补码再按照补码转成有符号数的吗
[解决办法]
有符号与无符号的相互转化是直接复制位的
[解决办法]
unsigned int s = ( unsigned int )( -25 );
好色部分不会有任何可执行代码,只是编译的时候将其解释为无符号,然后拷贝给s


[解决办法]
无符号数, 有符号数 的二进制编码相同
[解决办法]
自认为应该是将-25转为二进制补码,然后将此补码按照无符号数转回来即可
似乎也行,不过是做无用功,
因为, 有符号数就是补码数,正有符号数和0就是原码表示,负数就是补码表示。

有符号数和无符号数,之间的强制转换;
就是不做转换,原数不动,一个Bit也没有改变。
改变的只是数据类型。


热点排行