C语言使用unsigned把负数转换成整数是怎么计算的?

如题所述

第1个回答  推荐于2019-10-18
#include <stdio.h>
void main()
{
signed num=-1; //定义一个有符号负数
unsigned uNum; //声明一个无符号变量用来存储正数
uNum=(unsigned)(num); //强制转化成无符号正数
printf("%u\n",uNum); //打印出结果
}本回答被网友采纳
第2个回答  2019-11-19
负数的补码等于其符号位不变,数值部分的各位取反,然后整个数加1。
第3个回答  2019-12-24
所谓有符号和无符号整数的主要区别是如何看待最高位。
对于单字节二进制数01010110,无符号整数为86,有符号数也为86,因为最高位为0,所以二者间没有区别。
对于二进制数10101100来说,无符号数为172,有符号数则为-84。二者区别很大。
相似回答