我的编程空间,编程开发者的网络收藏夹
学习永远不晚

浅析计算机组成原理机器数概念与转换

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

浅析计算机组成原理机器数概念与转换

一、原码、反码、补码、移码的概念

1. 真值 

二进制数和十进制数一样有正负之分。书写时可以用"+"和"-"来表示数据的符号,这种书写格式称为真值。

例如:十进制的+3和-5,二进制的+011和-101都是真值。   

2. 机器数

由于数据只有正、负两种符号,因此在计算机中很自然就采用二进制的0和1来表示数据的符号,由符号和数值一起编码表示的二进制数称为机器数或机器码。常用的机器数有原码、反码、补码和移码。 

例如:(这里的机器数都是原码)1,0001第一位表示符号位,1表示负数,逗号将符号位和数值位区分开,逗号后面的是数值位,0001是二进制,所以转换为十进制后,真值就是 -1;

再比如   0,101表示的十进制数的真值是+5。 

1. 原码

原码就是符号化的数值,其编码规则简单直观:正数符号位用0表示,负数符号位用1表示,数值位保持不变。

例如:

x=+0.1101,则[x]原=0.1101;x=+1101,则[x]原=01101

x= -0.1111,则[x]原=1.1111; x= -1111,则[x]原=11111 

原码数据表示简单直观,只需将符号位加上二进制数的绝对值即可。但原码存在两个机器0,这会给数据运算带来麻烦。另外原码的加减法运算复杂,符号位不能直接参与运算。加法运算需要“同号求和,异号求差”,减法运算需要“一号求和,同好求差”,求差时还需要先比较大小,然后用大数减去小数,最后结果的符号选择也相对复杂。显然,利用原码作为机器数在实现加减法运算方面是不方便的,原码在计算机中目前仅仅用于表示浮点数的尾码。 

2. 反码 

反码又称1的补码,其符号位和原码相同,真值为正数时,反码和原码相同;真值为负数时,反码数值位为真值数值位取反。 

例如:

x=+0.1101,则[x]反=0.1101;x=+1101,则[x]反=01101 

x= -0.1111,则[x]反=1.0000;x= -1111,则[x]反=10000

反码的符号位和原码相同,当真值为负数时,数值位需要逐位取反。同样反码也存在+0和-0两个0.反码的加减运算较原码略简单,其符号位可以直接参与运算,加法运算直接将反码相加即可,但最高位进位要从运算结果最低位相加(循环进位)。减法运算只需要将被减数的反码加上减数负数的反码即可,同样也要采用循环进位的运算方法。但尽管如此,现代计算机中并没有采用反码进行数据表示和运算,这是因为人们找到了更好的编码——补码。

3. 补码

计算机中的二进制数据都有字长的限制,数据最高位进位的位权值就是模数,运算结果超过模数的部分都会被自动舍弃,所以计算机二进制数据的运算属于典型的有模运算,非常适合采用补码进行表示和运算。 

例如:

x=+0.0101,则[x]补=0.0101;

x= -0.0101,则[x]补=1.1011;

x= -0.0000,则[x]补=0.0000;

x= -1.0000,则[x]补=1.0000;

补码的表示相对原码更加复杂,但其只有唯一的0,符号位可以直接参与运算,运算时符号位的进位作为模会自动舍弃,其独特的表示方法使得减法运算可以转换成加法运算,大大方便了二进制的运算。目前计算机中普遍采用补码表示有符号整数。 

4. 移码 

移码只用于定点整数的表示,通常用于表示浮点数的阶码。其编码方式是直接将真值x加一个常数偏移量。

例如:

x=+1010110,则[x]移=11010110;

x= -1010110,则[x]移=00101010; 

移码具有以下特点:

① 移码的符号位中0表示负数,1表示正数;

② 同一数值的移码和补码除符号位相反外,其他各位相同;

③ 移码中0的表示也唯一,具体表示为100000……。 

二、原码、反码、补码、移码的转换 

1. 原码转反码

当原码的真值为正数时,反码的机器数就等于原码的机器数

当原码的真值为负数时,反码的机器数等于原码的机器数取反(符号位不变)

例如:

x=+0.1101,则[x]反=0.1101;x=+1101,则[x]反=01101 

x= -0.1111,则[x]反=1.0000;x= -1111,则[x]反=10000

2. 原码转补码 

当原码的真值为正数时,补码的机器数就等于原码的机器数

当原码的真值为负数时,补码的机器数等于原码的机器数取反再加1(符号位不变) 

例如:

x=+0.0101,则[x]补=0.0101;

x= -0.0101,则[x]补=1.1011;

x= -0.0000,则[x]补=0.0000;

x= -1.0000,则[x]补=1.0000;

简单来说,原码的反码加1就是补码 

3. 原码转移码 

当原码的真值为正数时,移码的机器数等于原码,但是符号位要改变

当原码的真值为负数时,移码的机器数等于原码机器数取反加1(符号位取反) 

例如:

x=+1010110,则[x]移=11010110;

x= -1010110,则[x]移=00101010; 

简单来说,原码的补码数值位不变,符号位取反就是移码

三、总结 

① 原码、反码、补码、移码都是机器数的表示方法,其实转换为人类所理解的数(真值)都是一样的,但是人类的习惯性思维对反码、补码、移码理解比较困难,一般我们需要将它转换为原码再转换成十进制理解。 

例如:1,00010(1表示符号位,00010表示数值位)是一个机器数的补码,我们想知道它的真值,需要先将其转换为原码,它的原码为1,11110,符号位为1,说明它是个负数,数值位为11110,是二进制,转换为十进制是30,所以该机器数的真值是-30。 

② 当真值为正数时,反码、补码都等于原码,移码数值位等于原码,符号位取反即可。 

③ 原码、反码机器数表示的零有正负之分;补码、移码机器数表示的零只有一个(即正零和负零相等)。 

到此这篇关于浅析计算机组成原理概念与转换的文章就介绍到这了,更多相关计算机组成原理概念内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

浅析计算机组成原理机器数概念与转换

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

浅析计算机组成原理机器数概念与转换

这篇文章主要介绍了浅析计算机组成原理概念与转换,包括原码、反码、补码、移码的概念与转换,需要的朋友可以参考下
2023-05-14

计算机组成原理机器数概念与转换的方法是什么

本文小编为大家详细介绍“计算机组成原理机器数概念与转换的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“计算机组成原理机器数概念与转换的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、原码、
2023-04-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录