补码取值范围为什么大一位(请高手帮忙!谢谢了!请问为什么用二进制补码表示数值范围比原码多一)

本文目录
- 请高手帮忙!谢谢了!请问为什么用二进制补码表示数值范围比原码多一
- 相对于原码,反码而言,为什么补码表示数的范围大一些
- 双字节有符号整数,其原码,反码,补码的取值范围
- 为什么二进制补码的表示范围比原码的表示范围要大
- 为什么取值范围负数总是比正数大一呢,不应该是一样的么,比如说16位是-32768--32767.
请高手帮忙!谢谢了!请问为什么用二进制补码表示数值范围比原码多一
例如4位二进制码
因为1000和0000的原因。
规定0000位十进制的0,而又因为0和-0中,-0是个没意义的数,就把1000让给了最小的-8
相对于原码,反码而言,为什么补码表示数的范围大一些
以8位二进制机器码为例说明:
.
原码范围:1111 1111b~0111 1111b
对应真值范围: -111 1111b~+111 1111b, 即 -127d~ +127d
.
反码范围:1000 0000b~0111 1111b
对应真值范围: -111 1111b~+111 1111b, 即 -127d~ +127d
.
补码范围:1000 0000b~0111 1111b
对应真值范围:-1000 0000b~+111 1111b, 即 -128d~ +127d
.
由此可知,补码表示的数值范围最大
双字节有符号整数,其原码,反码,补码的取值范围
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。今天着重来讲补码的范围。以下均默认为8位
原码的范围:-127~127
反码的范围:-127~127
补码的范围:-128~127
换成一般形式,假设有n位
你会发现,补码的范围要比其它码多一位,那这是为什么呢,问题出在0上
先看原码的+0与-0
再看反码的
最后看补码的,你会发现,他们是一样的
为什么二进制补码的表示范围比原码的表示范围要大
因为原码的0有“正0”和“负0”,而补码的0只有一种表示方法。
10000000表示为原码的“负0”而在补码中表示-128。
为什么取值范围负数总是比正数大一呢,不应该是一样的么,比如说16位是-32768--32767.
这里有一个0值的差别。
以最简单的单字节char型为例。占8位,最高位为符号位。
这样0值就有了
0000 0000 (正零)
1000 0000 (负零)
两种。
从数学角度上,是没区别的,可是用两种形式表示一个数,明显是浪费了。于是计算机存储就约定,当符号位为0,即正零时才是0.符号位为1时,让它去表示另外一个数好了。
那这个数是什么呢,按照补码的方式求一下,
1000 0000首先符号位为1,是个负数,
取反,0111 1111
加一,1000 0000
又回来了... 但这时代表的就是值了,注意这里的1已经不是符号位了。计算其值就是128.
于是 1000 0000就表示成了-128。

更多文章:
计算机网络协议指的是tcp ip协议(TCP/IP协议是什么)
2025年10月21日 07:15
oracle数据库备份文件后缀(ORACLE 数据库导出的数据文件 什么后缀)
2026年4月7日 10:45
新加坡marina square风景(新加坡Marina Bay Sands空中花园设计欣赏)
2026年4月3日 10:45
datagridview设置表头(Datagridview表头样式设置)
2026年9月3日 13:45
mysql workbench查看表结构(在使用mysqlworkbench6.3怎么查看mysql数据库的关系图)
2025年7月31日 04:30
curl访问地址(php curl访问本地测试地址 链接超时,什么原因.公网可以)
2026年2月15日 19:15
object后面接什么(高中英语 object 意思为“拒绝“时的用法 后面跟什么)
2026年6月30日 19:00
win10系统java环境变量设置(win10怎么配置java环境变量path)
2025年6月16日 13:45
jquerytrigger参数(怎么给jquery方法传值 就是点击第2个button后执行第一个button的方式 怎么给s传值)
2025年11月5日 00:15
selective tool教程(selective tool能卸载吗)
2025年5月30日 06:30











