为了账号安全,请及时绑定邮箱和手机立即绑定

用二进制来表达负数,但这个二进制不是也可以表示一个正数吗?

用二进制来表达负数,但这个二进制不是也可以表示一个正数吗?

慕粉4241372 2017-03-03 16:37:47
举例:-1的4位二进制:1的二进制是0001反码是1110补码是1111但15用二进制表示也是1111那问题来了,计算机这么知道这是-1还是15?
查看完整描述

3 回答

已采纳
?
MinRam

TA贡献87条经验 获得超24个赞

4bit的二进制补码表示范围…为-2³到2³-1 即-8~7
查看完整回答
1 反对 回复 2017-03-03
?
onemoo

TA贡献883条经验 获得超454个赞

其实如果只看 1111 这4位二进制数,计算机也不知道它们是什么。

所以编程语言会有类型系统,这些二进制位在被解释为相应的类型后才有意义。


以 1111 为例:

当它的类型是有符号整型,那么它就表示 -1。有符号整型的最高位被视为符号位,这里符号位为 1 表示它是负数,按照补码解释为 -1。 有符号数最大只能表示为二进制 0111,也就是十进制的 7。

当它的类型是无符号整型,那么它就是 15。

所以具体会被解释成什么由它的类型而定。


顺便说下,这也正是为什么整型间转型时会发生溢出。 如果你把这个 15 转型为有符号整型,那 1111 就被当作是 -1 了。

所以转型时要注意不同类型能表示的数值范围。

查看完整回答
1 反对 回复 2017-10-20
?
慕无忌8046009

TA贡献1条经验 获得超0个赞

最高位不是表示符号位吗

查看完整回答
反对 回复 2017-10-19
  • 3 回答
  • 0 关注
  • 1832 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信