【计算机基础

2023-11-20

定点数的表示

  • 定点数:小数点的位置固定

例:996.007; -- 常规计数

  • 浮点数:小数点的位置不固定

例:9.96007 * 10^2; -- 科学计数法

  • 二进制的定点数、浮点数也类似

无符号数

  • 整个机器字长的全部二进制位均为数值位,没有符号位(+ -),相当于数的绝对值

例:1001 1100B
= 1 * 2^7 + 1 * 2^4 + 1 * 2^3 + 1 * 2^2
= 156D
  • 表示范围

例:8位二进制数: 2^8种状态(0000 0000 ~ 1111 1111) = 0 ~ 256
= 1 0000 0000(256) - 1
= 2^8 - 1
  • n位的无符号数表示范围为:0 ~ 2^n - 1

通常只讨论无符号整数,没有无符号小数,例如C语言中unsigned只能修饰int、long等整数类型,修饰float编译器则会报错

有符号数

  • 定点整数表示

  • 定点小数表示

  • 可用原码、反码、补码三种方式来表示定点整数和定点小数,还可用移码表示定点整数

  • 若真值为x,则用[x]原、[x]反、[x]补、[x]移分别表示真值所对应的原码、反码、补码、移码

原码

  • 用尾数表示真值的绝对值,符号位0/1对应正/负

  • 例:机器字长为8位,用原码表示+19D,-19D

  • 例:机器字长为8位,用原码表示0.75D,-0.75D

  • 原码表示范围:

  • 原码整数:-(2^n - 1) <= x <= 2^n -1 (原点对称)

  • 原码小数:-(1-2^-n) <= x <= 1 - 2^-n (原点对称)

  • 真值0有+0和-0两种形式

  • [+0]原= 0000 0000

  • [-0]原 = 1000 0000

反码

  • 若符号位为0,则反码与原码相同

  • 例:x = +19D; [x]原 = 0,0010011; [x]反 = 0,0010011

  • 例:x = +0.75; [x]原 = 0.1100000; [x]反 = 0.1100000

  • 若符号位为1,则数值位全部取反

  • 例:x = -19D; [x]原 = 1,0010011; [x]反 = 1,1101100

  • 例:x = -0.75; [x]原 = 1.1100000; [x]反 =1.0011111

  • 反码表示范围:

  • 反码整数:-(2^n - 1) <= x <= 2^n -1 (原点对称)

  • 反码小数:-(1-2^-n) <= x <= 1 - 2^-n (原点对称)

  • 真值0有+0和-0两种形式

  • [+0]原= 0000 0000; [+0]反 = 0000 0000

  • [-0]原 = 1000 0000; [-0]反 = 1111 1111

反码只是原码转变为补码的一个中间状态,并没有实际作用

补码

  • 正数的补码 = 原码

  • 例:x = +19D; [x]原 = 0,0010011; [x]反 = 0,0010011; [x]补 = 0,0010011

  • 例:x = +0.75; [x]原 = 0.1100000; [x]反 = 0.1100000; [x]补 = 0.1100000

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

  • 例:x = -19D; [x]原 = 1,0010011; [x]反 = 1,1101100; [x]补 = 1,1101101

  • 例:x = -0.75; [x]原 = 1.1100000; [x]反 =1.0011111; [x]补 = 1.0100000

  • 补码范围表示

  • 定点整数补码[x]补 = 1,0000000表示x = -2^7,若机器字长为n + 1位,补码整数的表示范围:-2^n <= x <= 2^n -1

  • 定点小数补码[x]补 = 1.0000000表示x = -1,若机器字长为n + 1位,补码小数的表示范围:-1 <= x <= 1 - 2^-n

机器字长同样是n + 1位时,补码比原码反码可多表示一个数
  • 真值0只有一种表示形式

  • [+0]原= 0000 0000; [+0]反 = 0000 0000; [+0]补 = 0000 0000

  • [-0]原 = 1000 0000; [-0]反 = 1111 1111; [-0]补 = 1 0000 0000 = 0000 0000(由于机器字长只有8位,反码只能取后8位)

移码

  • 补码的基础上将符号位取反,移码只能用于表示整数

  • 例:x = +19D; [x]原 = 0,0010011; [x]反 = 0,0010011; [x]补 = 0,0010011; [x]移 = 1,0010011

  • 例:x = -19D; [x]原 = 1,0010011; [x]反 = 1,1101100; [x]补 = 1,1101101; [x]移 = 0.1101101

  • 移码范围表示

  • 若机器字长为n + 1位,补码整数的表示范围:-2^n <= x <= 2^n -1(与补码相同)

  • 真值0只有一种表示形式

  • [+0]原= 0000 0000; [+0]反 = 0000 0000; [+0]补 = 0000 0000; [+0]移 = 1000 0000

  • [-0]原 = 1000 0000; [-0]反 = 1111 1111; [-0]补 = 1 0000 0000 = 0000 0000(由于机器字长只有8位,反码只能取后8位) ; [-0]移 = 1000 0000

  • 移码的作用:补码与移码为一一映射关系,真值增大,移码表示的无符号数随之逐一递增,移码将符号位融合进了数值中,因此移码表示的整数很方便计算机运算时对比大小;对比方式为将两个数从高位至低位对比,先出现1的数大

练习

  • 例:定点整数x=50,用8位原码、反码、补码、移码表示

[x]原 = 0011 0010
[x]反 = 0011 0010
[x]补 = 0011 0010
[x]移 = 1011 0010
  • 例:定点整数x=-100,用8位原码、反码、补码、移码表示

[x]原 = 1110 0100
[x]反 = 1001 1011
[x]补 = 1001 1100
[x]移 = 0001 1100
  • 例:求下列各种码对应的真值

[x]原 = 1000 1101 => x = -8 + -4 + -1 = -13
[x]反 = 1000 1101 => [x]原 = 1111 0010 => x = -64 + -32 + -16 + -2 = -114
[x]补 = 1000 1101 => [x]原 = 1111 0010 + 1 = 1111 0011 => x = - 64 + -32 + -16 + -2 + -1 = -115
[x]移 = 1000 1101 => [x]补 = 0000 1101 => [x]原 = 0000 1101 => x = 8 + 4 + 1 = 13
[x]原 = 0000 1101 => x = 8 + 4 + 1 = 13
[x]反 = 0000 1101 => [x]原 = 0000 1101 => x = 8 + 4 + 1 = 13
[x]补 = 0000 1101 => [x]原 = 0000 1101 = 1111 0011 => x = 8 + 4 + 1 = 13
[x]移 = 0000 1101 => [x]补 = 1000 1101 => [x]原 = 1111 0010 + 1 = 1111 0011 => x = -64 + -32 + -16 + -2 + -1 = -115
  • 技巧:由[x]补快速求[-x]补的方法

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

  • 例:[x]补 = 0000 1101; [-x]补 = 1111 0010 + 1 = 1111 0011 = 13D

无论使用哪种码,小数点位置(隐含)默认在整数数值部分的最后,在小数数值部分的开头
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【计算机基础 的相关文章

随机推荐

  • vue3 ---- 递归组件生成menu菜单 && 路由守卫鉴权

    目录 递归组件 el menu 父组件 子组件 路由 Vue路由守卫实现登录鉴权 全局守卫 路由独享的守卫 组件内的守卫 完整的导航解析流程 菜单权限 按钮权限 对于一些有规律的DOM结构 如果我们再一遍遍的编写同样的代码 显然代码是比较繁
  • IDEA切换分支导致项目异常, 部分类爆红问题解决

    关于idea切换分支导致项目异常爆红的方式解决两种办法 1 maven 并没有及时刷新 所以 当我们第一时间出现这个问题的时候 首选是刷新maven 如图所示 2 如果刷新mavne 还是没有解决idea 项目爆红的情况的话 那我们就需要考
  • 计算机不能创建用户,Windows10系统无法创建新用户该怎么办?

    由于工作需要 需要对同一台计算机创建多个用户帐户 Windows7操作系统创建新用户的方法很简单 简单几步就能够轻松完成创建 参照Windows7操作系统创建新用户的步骤 发现并不适用于Windows10操作系统 系统会提示需要登录Micr
  • CocosCreator波浪Shader

    waveEffect effect Copyright c 2017 2020 Xiamen Yaji Software Co Ltd CCEffect techniques passes vert sprite vs vert frag
  • Serverless 的前世今生

    作者 阿里云用户组 从云计算到 Serverless 架构 大家好 我是阿里云 Serverless 产品经理刘宇 很高兴可以和大家一起探索 Serverless 架构的前世今生 从云计算到云原生再到 Serverless 架构 技术飞速发
  • 【推荐算法】双塔模型代码(tensorflow)

    推荐算法 双塔模型介绍 MachineCYL的博客 CSDN博客 上文介绍了双塔模型的原理和结构 这篇介绍一下双塔模型的代码实现 我使用的是tensorflow来实现双塔模型和模型训练 一 前期准备 tensorflow使用的版本是2 0
  • 正激拓扑的复位电路

    正激拓扑的复位电路 1 杂谈 2 原理简介 3 分类 3 1 有源钳位 3 2 绕组复位 3 3 RCD复位 3 4 谐振复位 1 杂谈 我发现我有个最大的缺点是不会讲话 每次跟不熟悉的人讲话或者汇报时 就毫无逻辑 紧张的要死 被讨厌的勇气
  • Navicat设置id自增,并随时设置自增的起始值

    一 问题背景 有时候数据里面的表的id为 1 4 13 15等等 如下图 怎么重新设置自增的起始值 使它变成每个增加1 而不是散列的数 如下效果 二 解决方法 选中要修改的表 点击设计表 如下 然后点击 选项 在自动递增那里改为1即可 点击
  • 2022全国职业技能大赛-网络安全赛题解析总结④(超详细)

    2022全国职业技能大赛 网络安全赛题解析总结 自己得思路 模块A 基础设施设置与安全加固 20分 模块B 网络安全事件响应 数字取证调查和应用安全 40分 模块C CTF夺旗 攻击 20分 模块D CTF夺旗 防御 20分 有什么不懂得可
  • MATLAB实现PSO-SVM多输入单输出回归预测(粒子群算法优化支持向量机)

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • 循环 for while do..while 以及break和continue

    循环 for 双重for while dowhile continue break 一 for循环 被循环的执行语句为循环体 是否继续执行取决于终止条件语句 所以 循环语句由 循环体和循环的终止条件组成的语句 语句结构 for 初始化变量
  • 桌面怎么设置 计算机 网络连接,电脑桌面的本地连接ip地址可以设置吗_本地连接ip地址设置方法 - 驱动管家...

    1 首先在Win7桌面上找到 网络 入口 如下图 进入Win7网络 2 进入网络之后我们再点击顶部的 网络共享中心 如下图 进入Win7网络共享中心 3 进入Win7网络共享中心之后 我们再点击左侧的 更改网络适配器 如下图 选择更改网络适
  • 经典,一文讲透ESD原理和设计

    一直想给大家讲讲ESD的理论 很经典 但是由于理论性太强 任何理论都是一环套一环的 如果你不会画鸡蛋 注定了你就不会画大卫 先来谈静电放电 ESD Electrostatic Discharge 是什么 这应该是造成所有电子元器件或集成电路
  • Ubuntu20.04通过rsync和inotify实现定时备份与实时备份

    通过rsync和inotify实现定时备份与实时备份 为了避免主服务单点故障 可以将数据备份到远程备份机器 可以使用rsync工具同步Jenkins home到远程 可以利用rsync工具的 exclude from FILE 功能 定制一
  • KVM热迁移

    KVM热迁移 介绍 KVM热迁移的前提是拥有共享存储 以下通过NFS实现KVM热迁移 迁移过程 将一处于运行状态的KVM虚拟机从节点kvm 01迁移到kvm 02后继续运行 准备 主机准备 hostname IP地址 系统 配置 kvm 0
  • Docker 国内镜像地址

    http f1361db2 m daocloud io http hub mirror c 163 com https docker mirrors ustc edu cn
  • c++中的类模板

    C 的类模板为生成通用的类声明提供了一种更好的方法 模板提供参数化类型 即能够将类型名作为参数传递给接收方来建立类或者函数 一 定义类模板 include
  • IndexError: index 5 is out of bounds for axis 1 with size 5

    keras中报错 IndexError index 5 is out of bounds for axis 1 with size 5 原因 大概率是你的数据集label没有设置好 keras中数据集标签需要从0开始 并且连续 类似于下图这
  • Unity WebGL错误集锦

    ips 0 Unity的PlayerSettings的otherSettings或者Publish Settings里面的Enable Exceptions里面选择Full StackTrace 可以在打出的包中的浏览器的webgl打印出错
  • 【计算机基础

    定点数的表示 定点数 小数点的位置固定 例 996 007 常规计数 浮点数 小数点的位置不固定 例 9 96007 10 2 科学计数法 二进制的定点数 浮点数也类似 无符号数 整个机器字长的全部二进制位均为数值位 没有符号位 相当于数的