计算机是如何识别数据的表示是原码,补码,还是反码的?

2025-05-17 07:40:09
推荐回答(3个)
回答1:

问题1:在计算机中,正数用原码表示;负数用补码表示;而补码=反码加1。
例如:如果定义
int
i;
那么i就是一个有符号整形变量。这是,如果你给i赋值,那么计算机就会根据
i的最高位,判定其大小。
比如,i
=
-3。计算自动存储的数为(1111
1111
1111
1101
),这个就是补码。

回答2:

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

因为,使用补码,有“什么什么什么 ...”的好处。

而这些优点,原码和反码,并不具备。

所以,计算机中,并不使用原码和反码。

原码和反码,根本就不存在,所以,根本用不着区分它。

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

其实,在计算机中,只有二进制数。

如:1111 1010。

 它既是十进制的 250,也是-6 的补码。

 它到底是什么呢? 

 计算机如何区分它?

其实,计算机才不管它是什么东西。

区分它们,取决于你的算法。

计算: 1111 1010 + 1111 1010 = (1) 1111 0100。

    进位 1就相当于十进制的 256

如果你舍弃进位,这次运算就是:“补码+补码”,结果就是-12 的补码。

如果你保留进位,那就是:250 + 250 = 256 + 244 = 500。

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

结论:

 舍弃进位,就是【带符号数】的运算,1111 1010 就是-6 的补码。

 保留进位,就是【无符号数】的运算,1111 1010 就是 250。

一个二进制数,到底是什么类型的数?

 这就要看,在程序中,你对进位,如何处理了。

千万不要随便说:这个是补码、那个是无符号数。

 除非你知道,算法,是怎么处理进位的。

回答3:

计算机中,有原码和反码吗?

没有!

计算机中,只是使用补码,表示正负数据。

如何识别?

不用识别。