原码

负数在计算机中的表示方法

ぃ、小莉子 提交于 2020-02-13 09:41:24
转载于: http://www.cnblogs.com/junsky/archive/2009/08/06/1540727.html 对负数的二进制表示有些遗忘,在网上找了一下资料,贴出来已备再次遗忘: 假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: 00000000 00000000 00000000 00000101 5转换成二制是101,不过int类型的数占用4字节( 32位 ),所以前面 填了一堆0 。 现在想知道,-5在计算机中如何表示?   在计算机中,负数以其绝对值的补码形式表达 。 什么叫补码呢?这得从原码,反码说起。   原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 比如 00000000 00000000 00000000 00000101 是 5的 原码。   反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。 取反操作指:原为1,得0;原为0,得1。(1变0; 0变1) 比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。 称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。 反码是相互的

负数的二进制表示方式

坚强是说给别人听的谎言 提交于 2020-02-13 09:40:57
我们已经知道计算机中,所有数据最终都是使用二进制数表达。 我们也已经学会如何将一个10进制数如何转换为二进制数以及如何将如何将一个16进制数如何转换为二进制数,详见下图。 不过,我们仍然没有学习一个负数如何用二进制表达。 比如,假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为: 00000000 00000000 00000000 00000101 5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。 现在想知道,-5在计算机中如何表示? 在计算机中,负数以其正值的补码形式表达 。 什么叫补码呢?这得从原码,反码说起。 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 比如 00000000 00000000 00000000 00000101 是 5的 原码。 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。 取反操作指:原为1,得0;原为0,得1。(1变0; 0变1) 比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。 称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。 反码是相互的

原码,补码,反码

淺唱寂寞╮ 提交于 2020-02-13 09:40:39
计算机中所有的数据运算和数据存储都是补码的形式。 正数的原码,反码,补码都相同 负数的原码符号位为1(标识为负数),反码是对其原码逐位取反(符号位除外) 负数的补码通过在其反码的末尾加1得到 为甚采用补码计算呢? 由于计算机计算是在cpu中进行的,cpu中只有加法器,没有减法器,没法直接做减法运算, 我们知道,负数的表示符号位是1,(而补码的设计就是为了让符号位也参与运算)符号位同样参与运算 例如:9 - 2 = 9 + (-2) 原码:9 0000 1001    -2 1000 0010 + 1000 1011 (-1) 反码: 9 0000 1001    -2 1111 1101 +(1)0000 0110 (6) 补码:9 0000 1001 -2 1111 1110 +(1)0000 0111 (7) 可以看到,通过补码运算得到了想要的结果。 为什么要这要设计补码呢?(或者说补码设计的原理什么呢?) 9 - 2 = 9 + (-2) 例如字长为8,8个二进制位共可以表示2^8(256)个数字,包括符号位 表示范围0-->127(0111 1111)-->-128(1000 0000)-->-1(1111 1111)-->0(补码表示) -128(1000 0000),符号位为1,转换成原码(减1取反)(0111 1111)-->(1000 000) (1000 0000

原码,反码与补码理解

故事扮演 提交于 2020-02-13 09:40:21
原码,反码与补码理解 1. 写作目的 平时学习总结的学习笔记,方便自己理解加深印象。同时希望可以帮到正在学习这方面知识的同学,可以相互学习。新手上路请多关照,如果问题还请不吝赐教。 2. 前置知识 字节 → 位 → 二进制数 计算机存储数据使用字节进行存储,机器有32位,64位为一个最小存储单元,1个字节为8位,那么32位机器一个存储单元存储4个字节,64位机器一个存储单元为8个字节。计算机使用二进制来表示数据,1位代表一个二进制数,要么是1,要么是0。 3. 引出原码 既然是数据,那么就有大小,就需要对数值进行运算。我们用真值来表示数据的大小,正负。 十进制:+8 = 二进制:+1000 十进制:-6 = 二进制:-0110 +1000,-0110既是真值,但是计算机在存储数据时没有单独存储数值的正负,而是同样用1,0来存储负,正,那么这就是原码表示。 十进制:+8 = 二进制:01000 十进制:-6 = 二进制:10110 表示是没有问题?但是问题又出现了,那就是如果是同符号运算,我们很好算,如果符号不相同的两个数相加,我们首先要判断哪个数更大,然后相减得到结果,再用大数的符号标注,这样每次算更加麻烦。而且计算机没有设计减法运算,只有加法运算,因为加法运算更加快速。我们如何来实现2个数的减法。下面就是加法转减法的思路: 4. 同余模数 以表盘为例:表盘有12个刻度

计算机组成原理学习(二)原码,反码,补码

烈酒焚心 提交于 2020-02-12 17:35:44
数据在计算机中以二进制串存储,这种01序列叫“ 机器数 ”。 每个机器数都有对应的值,比如0001换算就是现实里十进制的1,这个值叫它的“ 真值 ”。 1.原码 为了表示负数的前面的符号,一种办法是采用“ 最高一位表示符号而非数值 ”的编码方式——原码。 如八位的运算器,机器数0000 0001的真值为1,1000 0001的真值为-1。第一位为符号位,剩下的位表示真值。 解决了符号表示问题,但是引出了新的问题,那就是1000 0001不能按照常识意义上来换算了,按正常二进制转十进制的换算,1000 0001实际上代表129。 这样在硬件电路设计时会带来麻烦,要让机器能够先辨识符号位,再进行真值的计算。 2.反码 任何减法都可以转化为加上一个负数,如 1+1 = 1+(-1)。做加法比减法简单,要是能用一种新的编码方法把-1表示出来,然后和+1做加法,最后结果按照这种编码方式还是正确的,那就太好了。于是 为了让符号位也能参与计算 ,反码诞生了。 反码的表示方法基于原码,最高位仍然是符号位。正数的反码是其本身,负数的反码 符号位不变,剩下的位全部取反 。 +1 原码0000 0001,反码 0000 0001 -1 原码1000 0001,反码1111 1110 人们发现,采用这种编码方式,算出来的值是正确的。 用反码计算: 1-1 = 1+(-1) = 0000 0001 +

多么痛的领悟——计算机组成原理第一讲

十年热恋 提交于 2020-02-07 11:01:53
多么痛的领悟——计算机组成原理第一讲 前言 大家好,我是 泰斗贤若如 ,我又开始更新文章了,本次更新的内容是 计算机组成原理 ,是大学计算机相关专业必须学的,我是大三上学期学的,刚开始学的时候感觉很难,get不到重点,直到学了一遍,被期末考试逼了一遍,我才有所领悟,多么痛的领悟啊。我打算自己把整本书中的重点总结一遍,第一是自己过一遍,第二是给新手赠予玫瑰,希望你们学的时候花最少的时间学更多的知识,别再在考试前病急乱投医了(偷笑表情) 一、计算机系统 1、计算机的硬件 计算机系统由“ 硬件 ”和“ 软件 ”两大部分组成。 所谓“ 硬件 ”,是指组成计算机的各种物理装置,我们平时说的“买一台计算机”,购买的其实就是硬件,最主要的硬件有:主板、中央处理器、硬盘、内存等。 主板 是整个计算机的“ 交通枢纽 ”,各种器件都要连接到主板上,才能正常工作。 中央处理器 是计算机的“ 大脑 ”,它是计算机的 运算核心 和 控制核心 。 硬盘 是计算机的“ 笔记本 ”,上面记录了各种数据,需要的时候,就会从这里读取或往这里写入。 内存 是计算机的“ 稿纸 ”,一般来说,同一个处理器能利用的内存越大,运算速度也就越快。 有趣的是, 显示器 虽然是人们关注最多的设备,但它其实并非是一个必须的硬件,对于个人计算机来说,即使没有显示器也可以正常运行,但只要少了上面所说硬件中的任何一个,计算机就不能正常运行了

原码、反码、补码超级无敌清楚的讲解

ぐ巨炮叔叔 提交于 2020-02-07 02:46:22
计算机中的数据可以分为:数值数据、非数值数据; 数值数据可以分为:有符号数据、无符号数据; 非数值数据包含:文字、视频、图像… 以8位(一个字节)的数据为例: 有符号数据的表示范围为:-(2的n-1次方)-1到2的n-1次方; 无符号数据的表示范围为0到2的n-1次方 无符号数据与原码、反码、补码的关系: 无符号数全是正数,原码就是该正整数的二进制表示方法; 无符号整数的原码=反码=补码; 有符号数与原码、反码、补码的关系 : (正整数的原码=反码=补码) 原码: 有符号数据中的正整数的原码就是该数的二进制数,如:2用八位二进制 表示为00000010 有符号数据中的负整数的原码就是正整数的原码的最高位(符号位)为1, 其他位不变,如-2的原码用八位来表示为10000010 反码: 有符号负整数的反码就是在原码的基础上,符号位(最高位)不变,保 持为1,其余位按位取反(也就是原来为1的位变成0,原来位0的位变为1), -2的反码就是11111101 补码: 有符号数的补码就是在原码的基础上,符号位不变,其余位按位取反, 最后在最低位加一,-2的补码就是11111110 为什么会有原码、反码、补码呢? 计算机中的数都是用补码的形式存储的; 也就是正数在计算机中的存储方式就是补码(正数的原码=反码=补码); 负数在计算机中的存储方式也是补码(负数的原码、反码、补码规则在上面);

进制的基础

送分小仙女□ 提交于 2020-02-06 02:43:28
二进制的第一位为符号位,其他位为数据位 二进制数= 符号位+数据位 0表示正数 1表示负数 原码表示法: 0表示正数,1表示负数。 补码表示法: 正数的原码与补码相同,二负数的补码为数字位取反再加一 二进制的反码表示法: 正数的原码与反码与补码是一样的,负数的原码只是符号位上的差异,补码是原码数据位取反再加一,反码是原码的数据位取反 定点数与浮点数 定点数的表示方法 分为纯正数,存小数,和存120.12这样的数,是需要乘以一个比例因子的变成12012或者0.12012这样的数去存储 浮点数的表示方法 浮点数终是表示成为是个科学技术法,计算机存储它的尾数,和阶数,包括阶数的符号位,与尾数的符号位 浮点数的表示范围 单精度浮点数,使用4个字节32位表示浮点数,双精度浮点数:使用8个字节 64位表示 浮点数的规格化 来源: CSDN 作者: Griffin blue devils 链接: https://blog.csdn.net/weixin_43824400/article/details/104188399

原码与补码的加减交替法的区别及例题分析

只愿长相守 提交于 2020-02-03 09:18:02
原码加减交替法 (1)商的符号由参与计算的两数的符号通过异或运算获得; (2)参加运算的两个数是绝对值的补码; (3)原码上商的原则:若余数为正,则商“1”;若余数为负,则商“0”; (4)原码除法的第一步做减法,即被除数减除数; 简而言之 首先,将两个数转换成二进制原码(若为十进制的话);然后求原码的绝对值的补码;接着将求得的补码进行减法操作,即加上补码的绝对值的负数;最后按着上商的原则进行计算,直至商的位数与除数或被除数的位数相同。 补码加减交替法 (1)商的符号在求值的过程中自然形成; (2)参加运算的两个数是补码; (3)补码上商的原则:若余数与除数同号,则商“1”;若余数与除数异号,则商“0”; (4)补码除法的第一步要根据被除数与除数的符号决定:若两数同号,则做减法;若两数异号,则做加法; 例题分析 用原码陈列除法器计算x÷y,x=11000,y=-11111 解:|x|补=x补=011000,y补=100001,|y|补=011111 x补 0 1 1 0 0 0 +[-|y|补] 1 0 0 0 0 1 —————————— 1 1 1 0 0 1 <0 q0=0 左移 1 1 0 0 1 0 +|y|补 0 1 1 1 1 1 —————————— 0 1 0 0 0 1 >0 q1=1 左移 1 0 0 0 1 0 +[-|y|补] 1 0 0 0 0 1 ——

谈谈补码与移位

我们两清 提交于 2020-02-02 13:43:34
在计算机中整数的表示使用补码来表示的。 什么是补码呢?首先要明白什么是原码。 数字是有符号的,计算机中,用最高位作为符号位。以四位机器码举例:1的原码表示是:0001; -1 的原码表示是:1001。 也就是说表示实际数值的只有3位。因此4位机器码原码表示数的范围是:[-7, 7],其中0有两种表示,+0: 0000; -0: 1000。 原码表示清晰易懂,但对机器来说却是个麻烦,因为我们必须设计两套电路分别表示加法和减法。 为了统一加减法电路,人们想到了同余原理,让符号位也参与运算,补码应运而生。(反码没有实际应用,没必要记,这里就不解释了,实际上如果不是为了引出正数的补码表示,原码也没必要记) 对于正数,补码表示就是其原码,还以四位机器码举例:1的补码表示是:0001。 对于负数,补码表示就是对于相应的正数表示,连同符号位一起,各位取反后加1。 -1的补码表示为: 1111。(0001 各位取反,1110, 再加1) 对于补码来说,我们没办法直接看出负数的值,想知道负数的真值,我们需要对负数求补,再加上符号位即可。 以-3举例:1101。最高位是1,我们知道它是个负数。对其求补:0010 + 1 = 0011。我们也就知道了其值为-3。 也就是说,正数求补就是其对应的负数,负数求补就是其对应的正数。 对于减法,加上其负数的补码即可。我们成功的把减法运算变成为了加法运算。