计组——定点数原码反码补码移码以及它们之间的转换_定点整数50转化为8位原码-程序员宅基地

技术标签: 计组  移码  计算机学科基础综合  补码  408  反码  

在这里插入图片描述

在这里插入图片描述

原码

用尾数表示真值的绝对值,符号位“0/1”对应“正/负”
在这里插入图片描述
若机器字长n+1位,原码整数的表示范围: − ( 2 n − 1 ) ≤ x ≤ 2 n − 1 {\color{Red} -(2^{n}-1)\leq x\leq 2^{n}-1} (2n1)x2n1(关于原点对称)
真值0有 + 0 {\color{Red} +0} +0 − 0 {\color{Red} -0} 0 两种形式
在这里插入图片描述
若机器字长 n+1 位,原码小数的表示范围: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n {\color{Red} -(1-2^{-n})\leq x\leq 1-2^{-n}} (12n)x12n(关于原点对称)

真值0有 + 0 {\color{Red} +0} +0 − 0 {\color{Red} -0} 0 两种形式

反码

若符号位为0,则反码与原码相同
若符号位为1,则数值位全部取反

若机器字长 n+1 位,反码整数的表示范围: − ( 2 n − 1 ) ≤ x ≤ 2 n − 1 {\color{Red} -(2^{n}-1)\leq x\leq 2^{n}-1} (2n1)x2n1(关于原点对称)
若机器字长 n+1 位,反码小数的表示范围: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n {\color{Red} -(1-2^{-n})\leq x\leq 1-2^{-n}} (12n)x12n(关于原点对称)

真值0有 + 0 {\color{Red} +0} +0 − 0 {\color{Red} -0} 0 两种形式
[ + 0 ] 原 = 0 , 0000000 [+0]_{原}=0,0000000 [+0]=0,0000000 [ − 0 ] 原 = 1 , 0000000 [-0]_{原}=1,0000000 [0]=1,0000000
[ + 0 ] 反 = 0 , 0000000 [+0]_{反}=0,0000000 [+0]=0,0000000 [ − 0 ] 反 = 1 , 1111111 [-0]_{反}=1,1111111 [0]=1,1111111

补码

正数的补码=原码
负数的补码=反码末尾+1(要考虑进位)

若机器字长 n+1 位,补码整数的表示范围: − 2 n ≤ x ≤ 2 n − 1 {\color{Red} -2^{n}\leq x\leq 2^n-1} 2nx2n1(比原码多表示一个负数 − 2 n {\color{Red}-2^{n}} 2n
若机器字长 n+1 位,补码小数的表示范围: − 1 ≤ x ≤ 1 − 2 − n {\color{Red} -1\leq x\leq 1-2^{-n}} 1x12n(比原码多表示一个 − 1 {\color{Red}-1} 1

补码的作用:让减法操作转变为等价的加法操作,节省硬件成本,ALU中无需集成减法器,执行加减法时,符号位一起参与运算

注意:补码的真值0只有一种表示形式

定点整数补码 [ x ] 补 = 1 , 0000000 [x]_{补}=1,0000000 [x]=1,0000000 表示 x = − 2 7 {\color{Red} x=-2^{7}} x=27

整数的原码和补码之间的相互转换都是数值位取反,末尾加1

定点小数补码 [ x ] 补 = 1 , 0000000 [x]_{补}=1,0000000 [x]=1,0000000 表示 x = − 1 {\color{Red} x=-1} x=1

小数的原码和补码之间的相互转换都是尾数取反,末尾加1

移码

在补码的基础上将符号位取反。注意:移码只能用于表示整数
移码的计算:移码=真值+偏置值

比如8位移码的偏置值=1000 0000B,即就是 2 n − 1 2^{n-1} 2n1
——————
-127
原码=1111 1111B
真值=-111 1111
移码=-111 1111B+1000 0000=0000 0001
——————
+127
原码=0111 1111B
真值=0111 1111
移码=0111 1111+1000 0000=1111 1111

移码的真值0只有一种表示形式: [ + 0 ] 移 = [ − 0 ] 移 = 1 , 0000000 [+0]_{移}=[-0]_{移}=1,0000000 [+0]=[0]=1,0000000
若机器字长 n+1 位,移码整数的表示范围: − 2 n ≤ x ≤ 2 n − 1 {\color{Red} -2^{n}\leq x\leq 2^n-1} 2nx2n1(与补码相同)

移码的作用:移码很方便的用计算机硬件判断两个整数的大小
之后的浮点数的相关运算中会大量使用到移码

练习

  1. 定点整数x=50,用8位原码、反码、补码、移码表示
32 16 8 4 2 1
1 1 0 0 1 0

前面补0,凑足8位,其中第一位为符号位
[ x ] 原 = [ x ] 反 = [ x ] 补 = 0 0110010 [x]_{原}=[x]_{反}=[x]_{补}={\color{Red} 0}0110010 [x]=[x]=[x]=00110010
[ x ] 移 = 1 0110010 [x]_{移}={\color{Red} 1}0110010 [x]=10110010 (补码的符号位由1变为0)

  1. 定点整数x=-100,用8位原码、反码、补码、移码表示

在这里插入图片描述

【解析】
[ x ] 原 = 1 1100100 [x]_{原}={\color{Red} 1}1100100 [x]=11100100
[ x ] 反 = 1 0011011 [x]_{反}={\color{Red} 1}0011011 [x]=10011011(原码数值位取反)
[ x ] 补 = 1 0011100 [x]_{补}={\color{Red} 1}0011100 [x]=10011100(补码数值位加1)
[ x ] 移 = 0 0011100 [x]_{移}={\color{Red} 0}0011100 [x]=00011100(补码的符号位由1变为0)

  1. 求下列各种码对应的真值
    [ x ] 原 = 1 0001101 [x]_{原}={\color{Red} 1}0001101 [x]=10001101 【-(1+4+8)=-13】
    [ x ] 反 = 1 0001101 [x]_{反}={\color{Red} 1}0001101 [x]=10001101 [ x ] 原 = 1 1110010 [x]_{原}={\color{Red} 1}1110010 [x]=11110010,-(2+16+32+64)=-114】
    [ x ] 补 = 1 0001101 [x]_{补}={\color{Red} 1}0001101 [x]=10001101 [ x ] 原 = 1 1110011 [x]_{原}={\color{Red} 1}1110011 [x]=11110011, -115】
    [ x ] 移 = 1 0001101 [x]_{移}={\color{Red} 1}0001101 [x]=10001101 [ x ] 补 = 0 00001101 [x]_{补}={\color{Red} 0}00001101 [x]=000001101= [ x ] 原 [x]_{原} [x](正数的原码等于补码), +13】
    【解析】
    [ x ] 原 = 0 0001101 [x]_{原}={\color{Red} 0}0001101 [x]=00001101 【+(1+4+8)=+13】
    [ x ] 反 = 0 0001101 [x]_{反}={\color{Red} 0}0001101 [x]=00001101 【+13】
    [ x ] 补 = 0 0001101 [x]_{补}={\color{Red} 0}0001101 [x]=00001101 【+13】
    [ x ] 移 = 0 0001101 [x]_{移}={\color{Red} 0}0001101 [x]=00001101 [ x ] 补 = 1 0001101 [x]_{补}={\color{Red} 1}0001101 [x]=10001101 [ x ] 原 = 1 1110011 [x]_{原}={\color{Red} 1}1110011 [x]=11110011, -(1+2+16+32+64)=-115】

补充:由 [ x ] 补 [x]_{补} [x]快速求 [ − x ] 补 [-x]_{补} [x]的方法

符号位、数值位全部取反,末位+1

总结

在这里插入图片描述
原码和反码的真值0有两种表示;
补码和移码的真值0只有一种表示。

若机器字长为n+1位,则:
原码和反码:
整数表示范围: − ( 2 n − 1 ) ≤ x ≤ 2 n − 1 {\color{Red} -(2^{n}-1)\leq x\leq 2^{n}-1} (2n1)x2n1
小数表示范围: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n {\color{Red} -(1-2^{-n})\leq x\leq 1-2^{-n}} (12n)x12n

补码:
整数表示范围: − 2 n ≤ x ≤ 2 n − 1 {\color{Red} -2^{n}\leq x\leq 2^n-1} 2nx2n1
小数表示范围: − 1 ≤ x ≤ 1 − 2 − n {\color{Red} -1\leq x\leq 1-2^{-n}} 1x12n

移码:
整数表示范围: − 2 n ≤ x ≤ 2 n − 1 {\color{Red} -2^{n}\leq x\leq 2^n-1} 2nx2n1
移码全0真值最小,移码全1真值最大

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/vavid317/article/details/118935715

智能推荐

Google Hacking语法总结-程序员宅基地

文章浏览阅读1w次,点赞11次,收藏109次。文章目录前言:一、什么是Google Hacking?二、Google Hacking的常用语法:三、Google hacking的常用语法:1、寻找网站的后台登录页面:2、搜索网站中的文件:3、下载网站的数据库:4、登录后台管理:5、利用google搜索C段服务器信息:6、利用其他漏洞:前言:简单总结下Google Hacking语法。一、什么是Google Hacking?Google Hacking是指使用Google、百度等搜索引擎对某些特定网站主机漏洞进行搜索,以达到快速找到漏洞主机或特_google hacking语法

【C语言】【数据结构】栈的应用(进制转换、括号匹配检验、行编辑程序、表达式求值)_实现顺序栈的基本操作,进行数制转换和括号匹配的检测;-程序员宅基地

文章浏览阅读640次。栈的应用——进制转换、括号匹配检验、行编辑程序、表达式求值_实现顺序栈的基本操作,进行数制转换和括号匹配的检测;

Mybatis_generator-程序员宅基地

文章浏览阅读611次。MyBatis Generator (MBG): Mybatis官方提供的代码生成器,可以根据数据库中表结构自动生成简单的CRUD操作。但联合查询和存储过程,仍需手动手写SQL和对象。MBG可以通过使用Maven、Java编码、命令行等方式来运行。本文主要介绍在Intellij IDEA中使用Maven插件mybatis-generator-maven-plugin来自动生成MyBatis代码...

十五、超市购物结账,首先问顾客是否是会员,如果是,所有商品打8折,如果不是,如果购买超过200元商品,则减免20元,否则无优惠 输入购买的商品总价、是否会员,输出实际需要支付的金额_如果是vip老顾客,则有10%的优惠折扣(9折),并告诉顾客最终支付价格。vip_name-程序员宅基地

文章浏览阅读520次。price = int(input("输入商品总价"))vip = int(input("是否会员?1 是 0 否"))if vip==1: price==price*0.8 print("应支付",price,"元")elif vip==0 and price<=200: print("应支付",price,"元")elif vip==0 and price>200: price=price-20 print("应支付",price,"元")_如果是vip老顾客,则有10%的优惠折扣(9折),并告诉顾客最终支付价格。vip_name

第一次见的根号分治-程序员宅基地

文章浏览阅读119次。根号分治_根号分治

一、基于MATLAB的数字图像处理———灰度变换_f=imread('c:/experiment/test3.jpg'); >> imhist(f,8-程序员宅基地

文章浏览阅读2.1w次,点赞27次,收藏220次。基于MATLAB的数字图像处理———灰度变换与空间滤波对于图像平面,定义为二维函数 f (x,y),其中x,y分别为空间横竖坐标。当f,x,y都是有限离散值时,图像即为数字图像。一、图像的输入/输出和显示相关函数:imread(‘filename’) //读取图片imshow(f)//显示图片figure//保留第一幅并输出第二幅你好! 这是你第一次使用 Markdown编辑器 ..._f=imread('c:/experiment/test3.jpg'); >> imhist(f,8); >>figure,imshow(f);

随便推点

macos上的ios虚拟机_如何将中级帖子转换为可在iOS和macOS上运行的SwiftUI应用-程序员宅基地

文章浏览阅读268次。macos上的ios虚拟机I recently turned one of my posts into a SwiftUI app, and the process is very easy. My post was documentation for SwiftUI itself, so it was separated into segments for each of the Views a..._ios 虚拟机可以获取rid吗

Java 语言哈希查找算法实现_java怎么从has表里面定位数据-程序员宅基地

文章浏览阅读300次。哈希查找是一种高效的查找算法,它能够快速定位元素并返回其位置。在Java语言中,我们可以使用HashMap或HashTable类来实现哈希查找。本文介绍了Java语言中的哈希查找算法的实现步骤,并给出了代码示例和运行结果。希望本文能够帮助你理解和使用哈希查找算法。_java怎么从has表里面定位数据

VMware虚拟化---部署安装ESXI6.7和VSCA6.7-程序员宅基地

文章浏览阅读3.9k次,点赞2次,收藏21次。本次演示使用vmware虚拟机,下面先说vmware虚拟机的新建步骤:首先,新建虚拟机,选择自定义;选择ESXI6.7,如果是其他版本ESXI请选择正确版本的ESXI;选择稍后安装操作系统;选择对应版本的ESXI;自定义安装目录,此处不建议使用默认C盘安装位置;按照本地机器实际硬件情况选择配置;网络选择NAT模式;选择准虚拟化;之后直接下一步到最后即可;新建完成后,在虚拟机设置中挂载ESXI安装镜像,然后开机进行ESXI系统安装。虚拟机开机后,进入ESXI系统界_vsca

android studio动态调试smali,【AndroidStudio】使用AndroidStudio动态调试Smali文件-程序员宅基地

文章浏览阅读251次。1.简介smalidea是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码。下载地址为:https://github.com/JesusFreke/smali/wiki/smalidea。Android Studio的安装,就是傻瓜式的安装,一路next下去。接下来笔者介绍一下笔者的软件环境:jdk 1.8,android studio..._最新版安卓studio smalidea是哪个插件

GoLang—爬虫—解析JSON数据_golang 爬虫json解析-程序员宅基地

文章浏览阅读2k次,点赞3次,收藏5次。JSON作为一种重要的数据格式,具有良好的可读性以及自描述性,广泛地应用在各种数据传输场景中。在网络爬虫中,当网页采用AJAX方式渲染数据时,我们必须找出AJAX的异步请求方式,并且模拟发送AJAX,从中获取数据内容,AJAX的响应数据大部分采用JSON格式表示。GoLand可以使用标准库encoding/json解析JSON数据,此外还有第三方包ffjson、easyjson、jsoniter..._golang 爬虫json解析

vue 项目配置EsLint_@vue/eslint-config-standard-程序员宅基地

文章浏览阅读1.7k次。前言前面的博文介绍了用standardJS进行vue项目的规范https://blog.csdn.net/GISuuser/article/details/114034641。但是发现有一个问题,无法修改规则,有一些规则不适合公司现有项目,又尝试了使用EsLint。配置也非常简单。配置安装依赖。最好用下面的方法,因为只安装Eslint,在初始化的时候会提示你安装下面剩余的,到时候非常麻烦,npm速度也慢。cnpm install --save-dev babel-eslint esli_@vue/eslint-config-standard

推荐文章

热门文章

相关标签