补码

计算机组成原理复习要点

陌路散爱 提交于 2019-12-16 06:48:39
1. 冯•诺依曼计算机的特点主要有: (1) 计算机由运算器,控制器、存储器和输入/输出设备五大部件构成 ,缺少任何一个部件都无法正常工作 (2) 指令和数据都以同等地位存放在存储器中 ,并可按地址访问。 (3)指令和数据都均以 二进制形式表示 (4) 指令在存储器中按顺序存放 。通常,指令是顺序执行的。在特殊情况下,可根据运算结果或指定的条件改变运算顺序。 (5) 指令由操作码和地址码组成 。操作码表示操作的性质,地址码表示操作数在存储器中的位置 (6) 机器以运算器为中心。 2.计算机系统的层次结构 计算机系统层次结构,指的是计算机系统由 硬件和软件 两大部分所构成,而如果 按功能再细分 ,可分为 7层 。 3.计算机各种性能指标之间的关系 总线的技术指标: 1. 总线的带宽 ( 总线数据传输率 ):总线带宽是指单位时间内总线上传输的数据量 2. 总线位宽:总线能同时传输的二进制位数 ,或数据总线的位数。 3.总线的工作频率:总线工作频率单位以MHz为单位,工作频率越高总线工作速率越快,总线带宽越宽。 4.各种性能指标之间的关系p19 计算机性能的定义: 吞吐率和响应时间 是考量一个计算机系统性能的基本指标。 吞吐率表示在单位时间内所完成的工作量 。在有些场合,吞吐率也可以称为带宽。 响应时间也被称为执行时间或等待时间 ,是指从作业在CPU上执行所用的时间外,还包括磁盘访问时间

剑指offer-二进制中1的个数

回眸只為那壹抹淺笑 提交于 2019-12-15 16:16:57
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。 举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而前面的1保持不变,因此得到的结果是1011.我们发现减1的结果是把最右边的一个1开始的所有位都取反了。这个时候如果我们再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都会变成0。如1100&1011=1000.也就是说,把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。 在Python中,由于负数使用补码表示的,对于负数,最高位为1,而负数在计算机是以补码存在的,往右移,符号位不变,符号位1往右移,最终可能会出现全1的情况,导致死循环。与0xffffffff相与,就可以消除负数的影响。 # -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): # write code here if n < 0: n = n &

补码,补码非快速计算

社会主义新天地 提交于 2019-12-14 11:45:13
补码高有效位大部分是1 以补码为1101为例: −23-2^3−2 3 222^22 2 212^12 1 202^02 0 1 1 0 1 所以补码1101的十进制数值为-8+4+1 = -3。 拓展补码的位表示: 如果要将补码拓展转换为更大的数据类型,那么就在新增的高有效位中填充,原始最高有效位的值。推导如下: 先拓展1位: −24-2^4−2 4 232^32 3 222^22 2 212^12 1 202^02 0 1 1 1 0 1 原来第4位的权值为-8,现在拓展后的第4位和第5位的权值和为-16+8 = -8,就相当于没拓展一样。所以很明显补码1 1101的数值还是为-3。 直接拓展4位: −27-2^7−2 7 262^62 6 252^52 5 242^42 4 232^32 3 222^22 2 212^12 1 202^02 0 1 1 1 1 1 1 0 1 原来第4位的权值为-8,现在拓展后的第4位到第8位的权值和为-128+64+32+16+8 = -8,就相当于没拓展一样。所以很明显补码1111 1101的数值还是为-3。 缩减补码的位表示: 反向思考,既然可以拓展位表示,那么其实也可以缩减位表示。 减小1位: −22-2^2−2 2 212^12 1 202^02 0 1 0 1 现在计算权值-4+1 = -3。发现缩减位表示后,十进制数值还是不变的

为什么一个byte的存储范围是-128~127?

让人想犯罪 __ 提交于 2019-12-12 15:55:00
为什么一个byte的存储范围是-128~127? 文本关键字:byte、字节、二进制位、反码、补码 文章目录 为什么一个byte的存储范围是-128~127? 一、byte 二、反码与补码 **1. 反码 补码 三、byte的数据范围 一、byte** 在计算机中,一个二进制位是最小的存储单元,由于是二进制,所以能存储的数字只能是0和1。显然,如果我们直接去操作每个二进制位将是很麻烦的过程,所以在编程中我们直接使用的是其他的数据类型,如:byte、int、float。这些数据类型能够使我们的数据存储更加方便,我们只需要关心他们能够存储多大范围和什么样类型的数据就可以了。 那么一个byte,也就是我们所说的一字节,他所占用的空间是8个二进制位。 1 byte = 8 bit(比特) 这8个bit就是8个二进制位,其中有一个是符号为,刚好可以用0和1来代表正负。那么这8个二进制位到底能够表示多大范围的数字呢?对于正数的进制转换相信难不倒大家,也可以参考底部的相关文章,我们先来看一下负数在二进制下是如何表示和转换的。 二、反码与补码 首先把公式立在这里: 正数的补码 = 原码 = 反码 负数的补码 = 反码 + 1 那么首先什么是原码呢?很简单,在我们不考虑符号的情况下,按照进制的转换方法将一个十进制数转换为二进制数,再添加上相应的符号位就完成了。符号位出现在最前(左)面一位,0代表正数

byte范围:-128  到 127 原因

 ̄綄美尐妖づ 提交于 2019-12-12 11:36:52
byte范围:-128 到 127 原因 : 在计算机内,定点数有3种表示法:原码、反码和补码 原码 :二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码 :正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码 :正数的补码与其原码相同;负数的补码是在其反码的末位加1。 java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数。 正数补码为其本身; 负数补码为其绝对值各位取反加1; 例如: +21,其二进制表示形式是00010101,则其补码同样为00010101 -21,按照概念其绝对值为00010101,各位取反为11101010,再加1为11101011,即-21的二进制表示形式为11101011 步骤: 1、byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111 十进制表示形式为127 2、最大正数是01111111,那么最小负是10000000(最大的负数是11111111,即-1) 3、10000000是最小负数的补码表示形式,我们把补码计算步骤倒过来就即可。10000000减1得01111111然后取反10000000 因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值

原码反码补码及加减运算

天涯浪子 提交于 2019-12-11 19:35:55
原码 原码又称带符号的绝对值表示,符号位0表示正数,1表示负数 如二进制的1110,其正负数的原码如下: 反码 正数的反码是其本身 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. 补码 正数的补码就是其本身 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) 例子 [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 加减法 补充一下:辗转相除法:100(10进制)转01100100(二进制) 来源: CSDN 作者: 千篇不一律 链接: https://blog.csdn.net/qq_41063141/article/details/103493315

整数的表示法

十年热恋 提交于 2019-12-11 06:28:11
文章目录 1 无符号表示法 1.1 无符号表示法的特点 1.2 无符号表示法的存储步骤 2 符号加绝对值表示法 2.1 符号加绝对值表示法的特点 2.2 符号加绝对值表示法的存储步骤 3 补码表示法 3.1 补码表示法的特点 3.2 如何取补码 3.3 无符号表示法的存储步骤 3.4 无符号表示法恢复原数的方式 1 无符号表示法 1.1 无符号表示法的特点 无符号表示法只能用于存储无符号整数,也就是正整数。 1.2 无符号表示法的存储步骤 无符号表示法存储步骤如下: 转换为二进制。 二进制位数不足n位的,左边(高位)补零。 举例: 复原就是存储步骤的逆运算。 2 符号加绝对值表示法 2.1 符号加绝对值表示法的特点 在存储整数中并不常用,却通常用于存储模拟信号(存储音频的部分会用到)。最高位用于表示符号,0表示正,1表示负。 2.2 符号加绝对值表示法的存储步骤 符号加绝对值表示法的步骤如下: 将绝对值转换为二进制。 二进制位数不足n-1位的,左边(高位)补零。 加上符号位。 举例: 复原就是存储步骤的逆运算。 3 补码表示法 3.1 补码表示法的特点 补码表示法是存储整数最常用的方法。 3.2 如何取补码 取补码主要有如下两种方法: 取反加1: 从右边开始复制,直到复制第一个1然后其他位取反: 注: 将一个数连续取两次补码,最终得到原数。 3.3 无符号表示法的存储步骤

java第二期:位运算

送分小仙女□ 提交于 2019-12-11 00:37:51
一、位运算的介绍 位运算:又称是二进制运算,位(代表的是二进制,或者是bit位)1字节 = 8bit(位)。 连接的操作数:其实也是二进制,返回值是一个数据类型。 存储格式:二进制数存储在计算中都是以补码的形式进行存储的。 原码 --> 反码 --> 补码 --------1--------- 2 步奏1:反码 = 0和1的替换 步奏2:补码 = 在反码的前提下+1 原码 <-- 反码 <-- 补码 -------- 2--------- 1 步奏1:反码 = 补码-1 步奏2:原码 = 反码的0、1替换 下面有步奏案例 关于3种状态码的认知在第六标题处,可往下观看。 二、位运算符的使用(bit的补码形式) 介绍运算符: | & ^ :双目运算符,操作数有两个 ~ : 单目运算符,操作数只有一个 3 和 4 的一个按位运算,底层转换为二进制数进行一个运算 3的二进制数:0b0000000000 00000000000 000000000 11 4的二进制数:0b0000000000 00000000000 000000001 00 因为一个int = 4byte 1byte = 8bit 所以将int转二进制数为 32bit(位) 1、按位与 & 规则:在二进制数位上只有相同1的时候才为true 0 1 1 1 0 0 上下都不同,所有结果为 0 0 0 3 & 4 =

计算机组成原理复习问题

孤街浪徒 提交于 2019-12-10 07:44:54
第二章: 1.在用补码阵列乘法器,求乘积x*y 时,如果是负值 为什么要取反? 2.溢出判断 为什么要还原 3.浮点运算方法 x+y x-y 浮点运算方法 X*Y 4.不恢复余数除法 来源: CSDN 作者: ao_mike 链接: https://blog.csdn.net/ao_mike/article/details/103465486

汇编语言之期末复习

让人想犯罪 __ 提交于 2019-12-09 13:57:45
复习时整理的小点 奇地址单元 存放2个读写周期 Cpu与存储器之间的任何信息交换使用的都是 物理地址 16位相对位移的范围是 8000H-7FFFH 段地址左移4位加偏移地址 PA=16DX2356+1000= 2456F0HPA=12345H 逻辑地址 为1200H :0345H 状态寄存器用来存放状态信息 一个字节有8位二进制数 8086cpu的内部数据总线是16位的 外部数据总线是16位的 机器语言是可执行指令 [BX+si+8]相对基址变址寻址 pa=bx+si+8 ,即 2000+3000+8 =5008 MEM 补码 寄存器间接寻址 有4个 bx BP SI DI 其中bp 默认段ss [bx+si] 使用ds段寄存器 [bp+5] 使用ss寄存器 段内间接寻址 只改变ip寄存器的值 段间间接寻址 改变cs和IP寄存器的值 PSW 状态寄存器 。不改变PSW的指令是 mov ax,bx 不影响cf标志位 的是inc dec 两个整数补码相加运算后 会产生无溢出但有进位 Jmp word ptr [bx] 段内间接近转移 二-十进制(BCD):用二进制编码的十进制压缩的BCD码:用四位二进制表示一个十进制数码非压缩的BCD码:用8位二进制表示一个十进制位 十进制数字74所对应的压缩型BCD码的形式是 74H 十进制数字85所对应的非压缩型BCD码的是 0805H CMP