有符号数就是用最高位表示符号(正或负),其余位表示数值大小,无符号数则所有位都用于表示数的大小有符号数和无符号数是针对二进制来讲的。有符号数用最高位作为符号位,“0”代表“+”,“1”代表“-”;其余数位用作数值位,代表数值。比如:0011 表示 +3;1011 表示 -3。无符号数全部二进制均代表数值,没有符号位。即第一个'0'或'1'不表示正负。比如:0011 表示 3;1011 表示 11。C支持所有整形数据类型的有符号数和无符号数运算。尽管C标准并没有指定某种有符号数的表示,但是几乎所有的机器都使用二进制补码。通常,大多数数字默认都使有符号的,C也允许无符号数和有符号数之间的转换,当执行一个运算时,如果它的一个运算数是有符号的而另一个是无符号的,那么C会隐含地将有符号参数强制转换为无符号数,并假设这两个数都是非负的,来执行这个运算。扩展资料:一个有符号的数据类型的最小值一般 是这样计算的:有符号的数据类型的最大值的计算方法完全和无符号一样,只不过它少了一个最高位(见第3点)。但在负值 范围内,数值的计算方法不能直接使用1* 26 + 1* 25 的公式进行转换。在计算机中,负数除为最高位为1以外,还采用补码形式进行表达。所以在计算其值前,需要对补码进行还原。 这里,先直观地看一眼补码的形式:在10进制中:1 表示正1,而加上负号:-1 表示和1相对的负值。那么,我们会很容易认为在2进制中(1个字节): 0000 0001 表示正1,则高位为1后:1000 0001应该表示-1。计算机中带有符号数用补码表示的优点:1、负数的补码与对应正数的补码之间的转换可以用同一种方法——求补运算完成,可以简化硬件; 2、可将减法变为加法,省去减法器; 3、无符号数及带符号数的加法运算可以用同一电路完成。可得出一种心算求补的方法——从最低位开始至找到的第一个1均不变,符号位不变,这之间的各位“求反”(该方法仅用于做题)参考资料:——无符号数 ——有符号数
上一篇:如何判断一个字符是否是数字字符
下一篇:如何判断输入的是数字