精华内容
下载资源
问答
  • 为什么八位二进制数表示范围为-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)。

    展开全文
  • 计算机对带符号数的表示有三种方法:原码、反码和补码。... 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? 计算机对带符号数的表示有三种方法:原码、反码和补码 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)
        
           所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
      反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
      补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

     

    展开全文
  • 二进制到计算机——logisim手把手造八位CPU为什么是二进制二进制表示准确不混淆二进制成熟的数学分支——布尔代数和逻辑门notnotnot(非)andandand(与)ororor(或)XORXORXOR(异或)算数逻辑单元(ALU)算数单元讲解...

    为什么是二进制

    二进制表示准确不混淆

    二进制没法表示太多意思,但可以表示开关两种状态,准确表示两个值"ture""ture""false""false",那么为何不采取其他进制呢,因为当手机电量不足或者周围有电噪声时信号会混淆,并随着上百万次状态变得越来越糟。把信号放在相对较远的地方——0011可以有效解决这个问题
    在这里插入图片描述在这里插入图片描述

    二进制成熟的数学分支——布尔代数和逻辑门

    notnot(非)

    在这里插入图片描述在这里插入图片描述

    andand(与)

    在这里插入图片描述
    在这里插入图片描述

    oror(或)

    在这里插入图片描述 在这里插入图片描述

    XORXOR(异或)

    在这里插入图片描述在这里插入图片描述我们可以设置一种对应关系,用多位二进制表示指定字符,如ASCIIASCII:
    在这里插入图片描述

    算数逻辑单元(ALU)

    ALUALU是执行ArithmeticArithmeticLogicLogic的单元,是表示和存储数字是计算机的一个重要功能,但真正的目标是计算,或者以结构和有目的的操作数字,如两个数相加,这些操作由计算机的"算数逻辑单元"处理。

    算数单元讲解

    半加器

    无进位(这不是半加器)

    在这里插入图片描述

    有进位(即半加器)

    在这里插入图片描述

    全加器

    • 全加器可用两个半加器和一个“或“门组成。这个得记住
      在这里插入图片描述
    • 或者用真值表现推:
    • 在这里插入图片描述
      S()=(ABCI+ABCI+ABCI+ABCI)CO()=(AB+BCI+ACI)S(和)=(A^{'}B^{'}CI^{'}+A^{'}B*CI+AB^{'}CI+ABCI^{'})^{'}\\CO(进位)=(A^{'}B^{'}+B^{'}CI^{'}+A^{'}CI^{'})^{'}

    在这里插入图片描述

    多位加法器

    串行进位加法器

    在这里插入图片描述
    (CI)i=(CO)i1Si=AiBi(CI)i(CO)i=AiBi+(Ai+Bi)(CI)i(CI)_i=(CO)_{i-1}\\S_i=A_i \oplus B_i \oplus(CI)_i \\(CO)_i=A_iB_i+(A_i+B_i)(CI)_i

    超前进位加法器

    • 串行加法器的不足
      我们发现串行进位加法器只有前一全加器输出后一全加器才能计算,这在实际应用中会导致延时。
    • 超前进位加法器原理:第ii位的进位输入信号是两个加数第ii位以前各位(0j1)(0\sim j-1)的函数,可在相加前确定
      在这里插入图片描述
      在这里插入图片描述

    溢出

    在这里插入图片描述如果是八位行波进位加法器,注意最后是有进位的输出,如果第九位有进位,就表示两个数的总和太大而超过了88位,这称为溢出,溢出通常会导致错误和意外结果。

    ALU的减法乘法除法
    减法同理可由电路得出。乘法是多个加法的和,或者乘除法也可以设置特有的逻辑单元,具体操作类似于加法

    逻辑单元讲解

    设置11为与门
    在这里插入图片描述
    设置00为或门
    在这里插入图片描述

    ALUALU封装

    做好之后我们将其封装起来,通常用VV表示
    在这里插入图片描述

    左上方近正方体是与或电路,右下方平躺长方体是加减电路

    在这里插入图片描述故封装后的结果为
    在这里插入图片描述

    寄存器和内存

    "AND-OR"锁存器,

    接下来我们以建立一个可以存储单个bitbit的电路,之后再扩大成为我们自己的内存模块,先看下面几个电路:

    • A开始输1后永久为1
      在这里插入图片描述
    • A输0后永久为0 在这里插入图片描述
    • 为了进行有效存储,创造出"AND-OR"锁存器,他有两个输入,setset11置1,resetreset1100,如果输入输出都是00则会保持当初存入的内容
      在这里插入图片描述
      这样记住了一个比特的信息,由于他**锁定了一个特定的值并保持状态,所以称之为锁存器**

    门锁

    两条线设值有点难以理解,所以我们修改一下电路,用一条线输入,另一条线设置“允许写入权限”,由于可以打开和关闭,我们称之为门锁。
    在这里插入图片描述

    封装带门锁的锁存器

    在这里插入图片描述

    寄存器

    像这样一组的锁存器称为寄存器,它能存储一个数字,寄存器能存多少bitbit叫位宽,写入前,我们用一根连接到所有启用输入的单线来实现这一点,将其设置为11
    在这里插入图片描述在这里插入图片描述这样就存入了一个八位的数字10110101!!!

    寄存器改进——矩阵放置

    按原本的放置方式,64位寄存器,可能需要129根线,存256位要513根线,解决方式是一个矩阵
    在这里插入图片描述只有行线列线同时为1才能导通。
    在这里插入图片描述此时256位的数据只需38根线即可。如果这个数据存储在8行12列的话,12=1100,8=1000,所以刚刚用的锁存器地址可以写成11001000

    多路复用器

    为将地址转换为正确的行或列的内容而用到
    在这里插入图片描述

    封装

    要存储一个数字,要输入八位的地址,一条写入线,一条线控制可写,一条线控制可读。
    在这里插入图片描述这样排成一行,则一次可存储一个八位数字,即一个字节。我们同时给8个256位内存同样的地址,每个同样的地址都得到一个数,如把11111111存入8行12列,只需地址输入11001000,允许写入,在对应的数据线上输对应的数字即可。
    在这里插入图片描述## RAMRAM
    这个内存的重要特性是随时以随机顺序访问内存位置,因此叫随机存取存储器。

    CPUCPU

    CPUCPU是执行程序,程序由一系列单独的操作组成,称为指令。他们指示计算机做什么,指令不仅仅是数学指令(发给ALU),还可能是内存指令(CPUCPU)和内存通信,然后读/写值,接下来我们将专注于功能部分,而不是线的连接。当我们用一条线连接两个组件时,这是所有必要布线的抽象概念,也称其为微体系架构

    部件的创立

    • RAMRAM
      假设在内存中只有16个位置,每个位置有8位。
      在这里插入图片描述
    • 寄存器
      给处理器四个八位寄存器,称之为"A,B,C,DA,B,C,D",用于临时存储值和更改值
      在这里插入图片描述- 程序存储
      我们已经知道数据可以作为二进制存储在内存中,程序也可以存储在内存中在这里插入图片描述
      在这个假设示例中,我们用前四位来储存“操作代码”或者简称“操作码”,后四位填写地址码。可以使寄存器或内存中的地址。
    寄存器名称 功能
    指令地址寄存器 存储当前指令的内存地址
    指令寄存器 $12

    在这里插入图片描述

    当我们第一次启动,所有的寄存器都从0开始
    在这里插入图片描述

    步骤

    取指令

    指令地址寄存器连接RAMRAM模块

    在这里插入图片描述

    此值复制到指令寄存器中

    在这里插入图片描述

    解码

    取了指令后,重要的是运行这个指令而不是杀死他。称为解码阶段,接下来,指令由控制单元解码和解释,“控制单元”也是由逻辑门构成,比如为了检验LoadALoad\, A,需要一个电路检验操作码是否与0010匹配,这可以用一些逻辑门完成。
    在这里插入图片描述

    解码电路和之前取指电路封装

    具体分析解码电路太过繁琐,我们这里继续进行封装,把控制单元封装
    在这里插入图片描述

    执行代码

    • load1110load\, 1110AA
      在这里插入图片描述
    • load1111load\, 1111BB在这里插入图片描述
    • ADDADD指令特殊,由于总共有四个寄存器,所以用两位足以,后面是两个寄存器的地址,0000对应AA,0101对应BB。此时将ALUALU也集成进CPUCPU在这里插入图片描述
    • 控制单元将A,BA,B的值作为输入传入,再传入ADDADD操作码来执行ADDADD操作,最后输出值保存到寄存器AA中,但他不能写入寄存器AA,因为新值会进入ALUALU反复和自己相加,因此ALUALU用内部寄存器暂时保存输出,关闭ALUALU,然后在正确的寄存器中写入值。

    访存取数

    根据指令需要,有可能要访问主存,读取操作数,这样就进入访存取数阶段。

    写回

    • store 像往常一样,我们把地址传给RAMRAM模块,但不是允许读取而是允许写入,同时打开寄存器AA的允许读取,这允许我们使用数据行来传递存储在寄存器AA中的数据。

    指令地址寄存器自增一

    有个时钟利用脉冲控制指令地址寄存器的自增在这里插入图片描述在这里插入图片描述我们的CPU就做好了!
    接下来看看logisim的展示:

    -ALUALU
    在这里插入图片描述

    • CLKCLK
      在这里插入图片描述
    • CPUCPU
      在这里插入图片描述

    参考资料

    二进制,寄存器,指令集
    计算机组成原理-用logisim设计ALU(8位算术/逻辑运算)

    展开全文
  • 计算机对带符号数的表示有三种方法:原码、反码和补码。... 10000000-11111111表示-128到-1, 00000000-01111111表示0-127 补码的1111 1111转换成原码就是1000 0001,也就是-1,补码就是二进制表示负数的
  • 数码管一种半导体发光器件,其基本单元...首先它电子元器件,四个引脚,对应BCD码的四位二进制数 ,高电平1低电平表示0,比如 :要让数码 显示8那么四个引脚分别输入1000即第一脚接高电平其它接低电平.依...
  • Problem:为什么 八位二进制数表示范围:-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位二进制数的计算机。之后“四位机”“八位机” “十六位机”等等。数据处理能力逐步增强...
  • 1.解决问题第一步 要想讲清楚-128这个问题,就像练北冥神功要先散功一样,先把你...这里要讲的种方式,为什么顺时针拨12-4也可以达到和正常思维的第一种方式一样的位置。12就是模。 同样的,如果进制的两
  • 数字的进制转换(3)

    2019-05-18 17:45:56
    比如说十进制数字 5 它的二进制表示形式 101 但是计算机存储一个数字,它要先开辟空间再存储信息。我们可以这样想在计算机中8个相邻的开关分成一组,装在一间房子,我们称作这个房子八个开关1字节,这就是我们说...
  • 段地址和偏移地址都可以由四位十六进制(用十六进制只是为了表示方便,用二进制表示的话太长了)组成如:ffff:0000前面表示段地址后面表示偏移地址,在计算机中每四位二进制可以表示一个十六进制数,那么八位就表示...
  • 今天接入一个机器人设备的udp通讯,协议中都使用的16进制的表示方式,之前接触的比较少,尤其八位,高八位代表的什么意思,所以先去了解了一下。 计算机内部二进制形式进行存储数据的,而我们代码中...
  • 负整数符号位1,原码符号位+数值位(去掉符号的二进制表示形式),反码将原码除符号位都取反,补码将反码加1得到. 0则可表示+0(0000 0000)和-0(1000 0000) 例:-8的八位二进制位原码1000 1000,反码1111...
  • 在计算机中的二进制数系统中,位,简记bit,也称为比特,每个0或1就是一个位。 2.“字节”计算机信息技术用于计量存储容量的一种计量单位,通常情况下,一字节有八位,简称B。 3.“KB”(千字节)一种资讯...
  • 2.八位二进制为什么表示范围(-128~~+127)理解 | 博客园 无符号单字节范围 无符号单字节unsigned char位宽8bit,范围[0, 1111 1111b],也就是[0, 255]。 有符号单字节范围 有符号单字节signed char位宽...
  • 最近回头看看基础,又忘记了byte 一个字节的数据大小范围为什么是-128~127是怎么来的了,后来想通以后,记了下来,本人学生,缺乏经验。如有不足之处,还望各位前辈斧正! 1:首先我们知道计算机底层都是加法计数器...
  • byte 长度1字节,也就是8位,八位二进制数转换十进制最大值多少?255。 如果unsigned byte 那么取值范围就是 0-255,而Java中的byte有符号位的,第一位表示正负数,0代表正数,1代表负数。 下面...

空空如也

空空如也

1 2 3 4 5 6
收藏数 111
精华内容 44
关键字:

二进制为什么是八位