C语言大神谢谢。。。。。 1、计算机里怎么表示负数,为什么这样表示? 2.、在char类型里为什么-128最小,

如题所述

1. C语言里,负整数的二进制形式最高位为 1,正整数的二进制形式最高位为 0。这是一种补码的表示形式,参考这里:http://baike.baidu.com/view/377340.htm
2. char 类型在32位机子上占用 1 个字节,也就是 8 位,由于最高位是符号位,所以最小的负数是 -2^7,也就是 -128。你知道如何求补码后,就不难知道,
-126 的二进制表示形式是 10000010,-127 的二进制表示形式是 10000001,由于补码没有 正负零,所以依次类推,用 10000000 表示 128.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-02-19

1、计算机里怎么表示负数,为什么这样表示? 

2.、在char类型里为什么-128最小。

----------------------

在计算机系统中,数值,一律采用补码表示和存储。

负数,以其“正值的补码形式”表达。

即:补码,是“代替负数”的正数。

计算机有个参数:“字长”。即 8 位机、16 位机。。。

字长限定之后,其数值,就是“周期性”的。

比如两位十进制数(0~99),其计数周期就是 10^2 = 100。

那么:26 - 1 = 25,

   26 + 99 = (进位 1) 25。

你如果舍弃进位,这两种算法,就是等效的。

-1 和 +99 等效,加法和减法等效。

99 就称为:-1 的补数。

计算公式是:【补数 = 负数 + 周期】。

正数,必须直接参加计算,不许变换。

所以,【正数,根本就不存在补数】。

在计算机中使用补数,就可以简化算法,从而简化硬件。

--------------------

char 型,是 8 位 2 进制数,计数周期是 2^8 = 256。

它可以表示 128 个负数,如下:

 -1 的补码是 255 = 1111 1111 (二进制)。

  。。。

 -128 的补码是 128 = 1000 0000。

由此可知:-128 是最小的数值。


第2个回答  2023-03-06
1、计算机里一般使用二进制补码来表示负数。二进制补码是将负数的符号位不变,其余各位取反再加1的方式来表示负数。例如,如果一个字节(8位)的二进制补码为11110001,则对应的十进制数为-15。这种表示方法的好处是在计算机进行负数运算时,可以将减法转化为加法运算,从而方便计算。
2、在char类型中,通常使用一个字节(8位)来存储一个字符。由于char类型是有符号的,因此最高位(即第8位)表示符号位。如果将最高位视为符号位,则char类型可以表示的范围为-128到127。因此-128是char类型的最小值。
相似回答