如何看一个二进制数是补码还是原码

2024-10-30 11:22:58
推荐回答(5个)
回答1:

这只是对正整数而言
——理论证明:
假设原码是某个二进制数字0或者1,记作a。
取反则!a。
补码+1=>(!a)+1相当于是对a再一次进行取反(因为二进制不是0就是1),所以等于做了(!!a)操作。因此a(原码)=!!a(补码)

回答2:

在计算机中,只用补码。
所以,1111 0101,必定是要当做补码来输出-11。
如果把 1111 0101,当做-111 0101 来输出,那就违背了原则。

回答3:

1111 0101 是不是补码?

这个事,要看你采用的算法。


-11、246 的二进制都是 1111 0101。

那么,1111 0101 到底是什么数?

你算算看:

  1111 0101 + 0000 1111 = (1) 0000 0101。

如果你舍弃进位,这就是:-11 + 15 = 5。

  -11、15,还有 5,就都是补码。

如果你保留进位,这就是: 246 + 15 = (256) 5 = 261。

  这么算,这三个数,都不是补码。

 

计算机中的程序,都是人编写的。

1111 0101 到底是什么东西?

这就完全取决于编程人。

与首位是 1 是 0,没有任何关系。

回答4:

假设

signed char i = 10;
signed char j = ~i;

此时j的值就是-11。。。当然输出-11

什么叫十进制形式。。。

回答5:

这个其实取决于数据类型, 数据类型决定了机器如何去理解这一串二进制数

int 型 有符号型是补码
unsigned int 无符号类型是原码