-
为什么八位二进制数表示范围为-128~+127?
2019-10-24 00:18:01为什么八位二进制数表示范围为-128~+127? 在昨天的文章中我们讲解了什么原码反码补码,以及计算机中为什么要使用补码,在文章最后的时候我们说了一个问题,八位二进制(在Java中就是byte类型)的取值范围是从-128到...为什么八位二进制数表示范围为-128~+127?
在昨天的文章中我们讲解了什么原码反码补码,以及计算机中为什么要使用补码,在文章最后的时候我们说了一个问题,八位二进制(在Java中就是byte类型)的取值范围是从-128到127,为什么呢?为什么127+1的结果是-128?我们今天来详细说明一下。
昨天虽然我们介绍了什么是补码,但是并没有说明补码的由来,今天我们来讲解一下。
在这里要说到一个概念 模,“模”是指一个计量系统的计数范围。如时钟等。 时钟的计量范围是0~11,模=12。表示n位的二进制数计量范围是0~2(n)-1,模=2(n),八位二进制数的模为2^8 。
任何有模的计量器,均可化减法为加法运算(这就是计算机二进制运算的原理)。假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时,即:10-4=6;另一种是顺拨8小时:10+8=12+6=6 。在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。
对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1成为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2^8。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了,把补数用到计算机对数的处理上,就是补码。
对一个正数的原码取反加一,得到这个正数对应负数的补码。例如~6=-7,而且加一之后会多出一个八进制补码1000 0000,而这个补码就对应着原码1000 0000,数字位同时当做符号位即-128 。
所以根据以上我们可以理解为什么八位二进制数表示范围为-128~+127。
八位二进制正数的补码范围是0000 0000 ~ 0111 1111 即0 ~ 127,负数的补码范围是正数的原码0000 0000 ~ 0111 1111 取反加一(也可以理解为负数1000 0000 ~ 1111 1111化为反码末尾再加一)。 所以得到 1 0000 0000 ~ 1000 0001,1000 0001作为补码,其原码是1111 1111(-127),依次往前推,可得到-1的补码为1111 1111,那么补码0000 0000的原码是1000 0000符号位同时也可以看做数字位即表示-128,这也解释了为什么127(0111 1111)+1(0000 0001)=-128(1000 0000)。
-
八位二进制数为什么表示范围 -128~127
2019-01-10 09:45:48计算机对带符号数的表示有三种方法:原码、反码和补码。... 10000000-11111111表示-128到-1, 00000000-01111111表示0-127 补码的1111 1111转换成原码就是1000 0001,也就是-1,补码就是二进制表...- 计算机对带符号数的表示有三种方法:原码、反码和补码。
- 8位原码和反码能够表示数的范围是-127~127。
- 8位补码能够表示数的范围是 -128~127。
- 范围是-128~127,那肯定是用补码表示的。 10000000-11111111表示-128到-1, 00000000-01111111表示0-127 补码的1111 1111转换成原码就是1000 0001,也就是-1,补码就是二进制表示负数的一种方法。
- 引入了补码概念:负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的。在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个。
- 注意:(-128)没有相对应的原码和反码,(-128) = (10000000)。
- 所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
- 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
- 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
-
八位二进制数为什么表示范围是:-128~~+127?
2013-03-10 18:42:24八位二进制数为什么表示范围是:-128~~+127? 计算机对带符号数的表示有三种方法:原码、反码和补码 8位原码和反码能够表示数的范围是-127~127 8位补码能够表示数的范围是 -128~127 所以既然范围是-128~127,那...八位二进制数为什么表示范围是:-128~~+127?
计算机对带符号数的表示有三种方法:原码、反码和补码
8位原码和反码能够表示数的范围是-127~127
8位补码能够表示数的范围是 -128~127
所以既然范围是-128~127,那肯定是用补码表示的。
10000000-11111111表示-128到-1, 00000000-01111111表示0-127
补码的1111 1111转换成原码就是1000 0001,也就是-1。
补码就是二进制表示负数的一种方法引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示范围为:
(-128~0~127)共256个.
注意:(-128)没有相对应的原码和反码, (-128) = (10000000)反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 -
【计算机组成原理】从二进制到计算机——手把手造八位CPU
2020-06-13 16:51:19从二进制到计算机——logisim手把手造八位CPU为什么是二进制二进制表示准确不混淆二进制成熟的数学分支——布尔代数和逻辑门notnotnot(非)andandand(与)ororor(或)XORXORXOR(异或)算数逻辑单元(ALU)算数单元讲解...从二进制到计算机——手把手造八位CPU
为什么是二进制
二进制表示准确不混淆
二进制没法表示太多意思,但可以表示开关两种状态,准确表示两个值和,那么为何不采取其他进制呢,因为当手机电量不足或者周围有电噪声时信号会混淆,并随着上百万次状态变得越来越糟。把信号放在相对较远的地方——和可以有效解决这个问题
二进制成熟的数学分支——布尔代数和逻辑门
(非)
(与)
(或)
(异或)
我们可以设置一种对应关系,用多位二进制表示指定字符,如:
算数逻辑单元(ALU)
是执行和的单元,是表示和存储数字是计算机的一个重要功能,但真正的目标是计算,或者以结构和有目的的操作数字,如两个数相加,这些操作由计算机的"算数逻辑单元"处理。
算数单元讲解
半加器
无进位(这不是半加器)
有进位(即半加器)
全加器
- 全加器可用两个半加器和一个“或“门组成。这个得记住
- 或者用真值表现推:
多位加法器
串行进位加法器
超前进位加法器
- 串行加法器的不足
我们发现串行进位加法器只有前一全加器输出后一全加器才能计算,这在实际应用中会导致延时。 - 超前进位加法器原理:第位的进位输入信号是两个加数第位以前各位的函数,可在相加前确定
溢出
如果是八位行波进位加法器,注意最后是有进位的输出,如果第九位有进位,就表示两个数的总和太大而超过了位,这称为溢出,溢出通常会导致错误和意外结果。
ALU的减法乘法除法
减法同理可由电路得出。乘法是多个加法的和,或者乘除法也可以设置特有的逻辑单元,具体操作类似于加法逻辑单元讲解
设置为与门
设置为或门
封装
做好之后我们将其封装起来,通常用表示
左上方近正方体是与或电路,右下方平躺长方体是加减电路
故封装后的结果为
寄存器和内存
"AND-OR"锁存器,
接下来我们以建立一个可以存储单个的电路,之后再扩大成为我们自己的内存模块,先看下面几个电路:
- A开始输1后永久为1
- A输0后永久为0
- 为了进行有效存储,创造出"AND-OR"锁存器,他有两个输入,输置1,输置,如果输入输出都是则会保持当初存入的内容
这样记住了一个比特的信息,由于他**锁定了一个特定的值并保持状态,所以称之为锁存器**
门锁
两条线设值有点难以理解,所以我们修改一下电路,用一条线输入,另一条线设置“允许写入权限”,由于可以打开和关闭,我们称之为门锁。
封装带门锁的锁存器
寄存器
像这样一组的锁存器称为寄存器,它能存储一个数字,寄存器能存多少叫位宽,写入前,我们用一根连接到所有启用输入的单线来实现这一点,将其设置为。
这样就存入了一个八位的数字10110101!!!
寄存器改进——矩阵放置
按原本的放置方式,64位寄存器,可能需要129根线,存256位要513根线,解决方式是一个矩阵
只有行线列线同时为1才能导通。
此时256位的数据只需38根线即可。如果这个数据存储在8行12列的话,12=1100,8=1000,所以刚刚用的锁存器地址可以写成11001000
多路复用器
为将地址转换为正确的行或列的内容而用到
封装
要存储一个数字,要输入八位的地址,一条写入线,一条线控制可写,一条线控制可读。
这样排成一行,则一次可存储一个八位数字,即一个字节。我们同时给8个256位内存同样的地址,每个同样的地址都得到一个数,如把11111111存入8行12列,只需地址输入11001000,允许写入,在对应的数据线上输对应的数字即可。
##
这个内存的重要特性是随时以随机顺序访问内存位置,因此叫随机存取存储器。是执行程序,程序由一系列单独的操作组成,称为指令。他们指示计算机做什么,指令不仅仅是数学指令(发给ALU),还可能是()和内存通信,然后读/写值,接下来我们将专注于功能部分,而不是线的连接。当我们用一条线连接两个组件时,这是所有必要布线的抽象概念,也称其为微体系架构
部件的创立
假设在内存中只有16个位置,每个位置有8位。
- 寄存器
给处理器四个八位寄存器,称之为"",用于临时存储值和更改值
- 程序存储
我们已经知道数据可以作为二进制存储在内存中,程序也可以存储在内存中
在这个假设示例中,我们用前四位来储存“操作代码”或者简称“操作码”,后四位填写地址码。可以使寄存器或内存中的地址。
寄存器名称 功能 指令地址寄存器 存储当前指令的内存地址 指令寄存器 $12 当我们第一次启动,所有的寄存器都从0开始
步骤
取指令
指令地址寄存器连接模块
此值复制到指令寄存器中
解码
取了指令后,重要的是运行这个指令而不是杀死他。称为解码阶段,接下来,指令由控制单元解码和解释,“控制单元”也是由逻辑门构成,比如为了检验,需要一个电路检验操作码是否与0010匹配,这可以用一些逻辑门完成。
解码电路和之前取指电路封装
具体分析解码电路太过繁琐,我们这里继续进行封装,把控制单元封装
执行代码
- 到
- 到
- 指令特殊,由于总共有四个寄存器,所以用两位足以,后面是两个寄存器的地址,对应,对应。此时将也集成进里
- 控制单元将的值作为输入传入,再传入操作码来执行操作,最后输出值保存到寄存器中,但他不能写入寄存器,因为新值会进入反复和自己相加,因此用内部寄存器暂时保存输出,关闭,然后在正确的寄存器中写入值。
访存取数
根据指令需要,有可能要访问主存,读取操作数,这样就进入访存取数阶段。
写回
- store 像往常一样,我们把地址传给模块,但不是允许读取而是允许写入,同时打开寄存器的允许读取,这允许我们使用数据行来传递存储在寄存器中的数据。
指令地址寄存器自增一
有个时钟利用脉冲控制指令地址寄存器的自增
我们的CPU就做好了!
接下来看看logisim的展示:-
参考资料
- 全加器可用两个半加器和一个“或“门组成。这个得记住
-
八位二进制数为什么表示范围(-128~~+127)理解
2017-04-28 14:28:19计算机对带符号数的表示有三种方法:原码、反码和补码。... 10000000-11111111表示-128到-1, 00000000-01111111表示0-127 补码的1111 1111转换成原码就是1000 0001,也就是-1,补码就是二进制表示负数的 -
八位二进制数码管显示multisim_简单介绍什么叫做数码管
2020-12-24 13:44:20数码管是一种半导体发光器件,其基本单元是...首先它是电子元器件,四个引脚,对应BCD码的四位二进制数 ,高电平为1低电平表示0,比如 :要让数码 显示8那么四个引脚分别输入1000即第一脚接高电平其它接低电平.依... -
数据类型:整数最小值为何不是最大值的相反数(为什么八位二进制数表示范围是:-128~127 ) ?...
2007-10-18 17:37:00Problem:为什么 八位二进制数表示范围是:-128~127 而不是 -127~127 short型有符号16位整数(一位符号位) 二进制表示: 十进制为: max=01111111 11111111 32,767 mix=11111111 11111111 -32,768 按上面... -
二进制补码
2012-11-27 21:41:00首先我们要明确的一点事这些码都是编码,编码就是用二进制数来表示特定的数字和符号,比如asc码就是用八位二进制数来表示英文字母和各种符号,同理我们也可以用二进制数表示数字大小。 这里... -
计算机中的二进制
2017-07-24 23:26:30我们都知道byte在Java中占一个字节,一个字节也就是八位,简单来说就是八个二进制(电脑只认识0,1 最终都是转化成二进制来识别的)在Java中最高位是用来表示正负数的,0代表正数,1代表负数。byte型的占八位数,有... -
计算机进制转换
2017-02-15 09:19:14计算机进制转换 我们总是说八位二进制表示的数的范围是:-128——...可是我们知道在八位二进制原码【(-127~-0 +0~127)共256个】,反码【(-127~-0 +0~127)共256个】,都没有表示到-128,而为什么说八位二进制数的 -
bit与byte&进制的总结
2020-08-20 19:48:33网上查到了一些大神的资料是这样写的:这就要从计算机的发展史来说了,在早期,有一种“一位计算机”,也就是每次只能处理1位二进制数的计算机。之后“四位机”“八位机” “十六位机”等等。数据处理能力逐步增强。... -
bit与byte&进制
2016-09-30 16:21:18网上查到了一些大神的资料是这样写的:这就要从计算机的发展史来说了,在早期,有一种“一位计算机”,也就是每次只能处理1位二进制数的计算机。之后“四位机”“八位机” “十六位机”等等。数据处理能力逐步增强... -
为啥八位的计算机可以用补码表示-128
2020-09-06 21:47:361.解决问题第一步 要想讲清楚-128这个问题,就像练北冥神功要先散功一样,先把你...这里要讲的是第二种方式,为什么顺时针拨12-4也可以达到和正常思维的第一种方式一样的位置。12就是模。 同样的,如果是十进制的两 -
数字的进制转换(3)
2019-05-18 17:45:56比如说十进制数字 5 它的二进制表示形式是 101 但是计算机存储一个数字,它要先开辟空间再存储信息。我们可以这样想在计算机中8个相邻的开关分成一组,装在一间房子,我们称作这个房子八个开关为1字节,这就是我们说... -
在32位处理器上指针的长度为4字节,为什么是4字节,而不是16字节,或者32字节
2014-09-08 10:00:21段地址和偏移地址都可以由四位十六进制(用十六进制只是为了表示方便,用二进制表示的话太长了)组成如:ffff:0000前面表示段地址后面表示偏移地址,在计算机中每四位二进制可以表示一个十六进制数,那么八位就表示... -
我与机器人 - [Today is Robot] - [16进制存储]
2019-07-24 11:16:03今天接入一个机器人设备的udp通讯,协议中都是使用的16进制的表示方式,之前接触的比较少,尤其是低八位,高八位又是代表的什么意思,所以先去了解了一下。 计算机内部是以二进制形式进行存储数据的,而我们代码中... -
java中int能表示的范围为什么是-2147483648到2147483647
2020-03-13 16:21:33负整数符号位为1,原码为符号位+数值位(去掉符号的二进制表示形式),反码是将原码除符号位都取反,补码是将反码加1得到. 0则可表示为+0(0000 0000)和-0(1000 0000) 例:-8的八位二进制位原码为1000 1000,反码为1111... -
32位存储环境下整数范围为什么是[-2^31,2^31-1]?
2018-12-05 09:02:09在计算机中的二进制数系统中,位,简记为bit,也称为比特,每个0或1就是一个位。 2.“字节”是计算机信息技术用于计量存储容量的一种计量单位,通常情况下,一字节有八位,简称为B。 3.“KB”(千字节)是一种资讯... -
C语言 1字节signed char的范围为什么是-128~127?
2018-10-20 21:09:002.八位二进制数为什么表示范围(-128~~+127)理解 | 博客园 无符号单字节范围 无符号单字节unsigned char位宽是8bit,范围[0, 1111 1111b],也就是[0, 255]。 有符号单字节范围 有符号单字节signed char位宽... -
byte一个字节的数据大小范围为什么是-128~127(最详细理解!!!)
2019-02-25 11:39:07最近回头看看基础,又忘记了byte 一个字节的数据大小范围为什么是-128~127是怎么来的了,后来想通以后,记了下来,本人学生,缺乏经验。如有不足之处,还望各位前辈斧正! 1:首先我们知道计算机底层都是加法计数器... -
为什么Java中byte类型的取值范围是-128~127
2013-03-17 21:47:39byte 长度是1字节,也就是8位,八位二进制数转换为十进制最大值是多少?是255。 如果是unsigned byte 那么取值范围就是 0-255,而Java中的byte是有符号位的,第一位表示正负数,0代表正数,1代表负数。 下面...
-
MySQL NDB Cluster 负载均衡和高可用集群
-
U盘量产软件.zip
-
MySQL 触发器
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
【爱码农】C#制作MDI文本编辑器
-
第四章 C语言 PTA数组——作业-答案.html
-
一个废物大学生的构建的神经网络(阅读总结)
-
工程制图 AutoCAD 2012 从二维到三维
-
佳能打印机G2800不需要软件的清零方法.txt
-
牛牛量化策略交易
-
营销葵花宝典.txt
-
【考研初试】安徽建筑大学903流体力学考研真题库资料
-
常见面试题-Spring Boot/ Spring Cloud
-
各种格式测试视频(.avi.wmv.mkv.mp4.mov.rm)
-
递归改动态规划:正则匹配
-
项目管理工具与方法
-
【硬核】一线Python程序员实战经验分享(1)
-
HDFS架构的稳定性
-
如何把本地jar包引入私人maven仓库
-
网上行销原则.txt