当前位置: 首页 > news >正文

定点数的表示和运算

文章目录

  • 真值(有正负号)和机器数(0正1负)
  • 原码
    • 整数
    • 小数
  • 补码
    • 负数的补数
    • 正数的补数
    • [y]~补~ ==> [-y]~补~
  • 反码
  • 小结
  • 移码
  • 移位运算
  • 加减法运算
    • 溢出判断

真值(有正负号)和机器数(0正1负)

在这里插入图片描述

无符号数与真值and机器数都不是一个概念

在这里插入图片描述在这里插入图片描述

移码不是有符号数 ,它没有符号位,他是用于比较大小

原码

整数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

n位整数,
最大值为,2ⁿ-1
最小时绝对值取最大,最小为-(2ⁿ-1)

原码的0有两种表示 +0:0,0000 -0:1,0000

小数

在这里插入图片描述
在这里插入图片描述

数值位为n,对于小数: 最大值为1-2的(-n)次方 最小时绝对值取最大,最小为-(1-2的(-n)次方)

最大值:0.1111—》0.1111+0.0001=1
最小值:-0.1111


小数原码的0有两种表示,这个和整数一样 假设数值位为4 +0:0.0000 -0:1.0000

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8位原码表示的范围是0——255,一共是256个数
范围是-127到+127【因为有一位是符号位】
不过比若说5位原码0,0000和1,0000都表示0,是同一个数!

补码

在这里插入图片描述
在这里插入图片描述

1.绝对值的和就是我们的模 2 负数+它的模=补数 例如-8的补数:12-8=4,即补数为4 验证:10-8=(10+4)%12=2 +9成为了-3的补数

在这里插入图片描述

负数的补数

在这里插入图片描述

正数的补数

在这里插入图片描述

负数的补数=负数+模
对于负数,如果它的符号位 不用 01表示,
那么模=2n,n表示数值位个数
如果负数的符号位 01表示
那么模=2n+1,n表示数值位个数,1为符号位

在这里插入图片描述
在这里插入图片描述
假设n为4,
最大值:1111,也就是24-1=15
最小值:10000,也就是24+1+(-24)=1,0000
【这个1可以当做符号位,代表负数,
也可以当做数值位,代表16。
总的说就是他可以表示一个最小的负数-16】


补码里面没有 -0
因为 -0:1,0000在我们补码里面不再是 -0,而表示-16

在这里插入图片描述

负小数的补码2的由来:
正小数的补码:0.0000
负小数的补码,符号位向前走一位:10.0000,所以2进制(10)=2

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

原码和补码相互转化:除符号位,按位取反,末尾+1

在这里插入图片描述

[y] ==> [-y]

在这里插入图片描述

在这里插入图片描述

反码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述
在这里插入图片描述


补码和反码,机器数越大,对应的真值越大

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

移码

移码是为了方便计算机比较两个正负数之间补码的大小关系
比如21的补码:0,10101
     - 21的补码:1,01011
单纯比较机器数,-21的补码>21的补码 这显然是不对的。

仔细观察发现,这两个正负数其实只要符号位互换,计算机就可以比较他们的大小了

在这里插入图片描述
在这里插入图片描述

正数的移码:符号位由0变1就行了
负数的移码:它的补码符号位取反
比如二进制:-10100
补码:1,01100
移码: 2^5^ -10100=0,01100

在这里插入图片描述
在这里插入图片描述

[X]<===>[X]:符号位取反!
在这里插入图片描述

移位运算

在这里插入图片描述


左移三位,丢掉左边的1,对应的真正就不准确了

在这里插入图片描述

左移三位,丢掉左边的1,对应的真正就不准确了

在这里插入图片描述

补码:
左移三位,丢掉左边的0,对应的真正就不准确了 因为补码是在原码的基础上按位取反+1得到的,丢掉1相当于是原码的0,不影响准确性

补码:
右移一位,丢掉右边的0,不影响结果,左边补1【补得是符号位】 右移两位,丢掉一个1,影响精度,左边填1【补得是符号位】

反码:
移掉0会影响结果
移调1,相当于原码的0,不影响结果

在这里插入图片描述
在这里插入图片描述

加减法运算

在这里插入图片描述
在这里插入图片描述
上图证明了:[A+B]==[A]+[B]

先求出A+B的值
再就出【A补+B补】的值
【A+B】的补码正好和【A补+B补】的值相等

这样,当计算机在求A+B时
可以先求【A+B】的补,也就是【A补+B补】的值 然后再通过补码转原码

在这里插入图片描述
在这里插入图片描述

[x]+[y]=0.1001+0.1011=1.0100
把1.0100向右移动一位:0.1010,也就是 10/16,再乘2,正好才是结果的20/16

溢出判断

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

http://www.lryc.cn/news/13165.html

相关文章:

  • java虚拟机内存分布
  • 最完整的小红书带货笔记——垂直模式
  • SpringBoot实战——个人博客项目
  • 浅谈Spring中事务管理器
  • Python练习系统
  • Transformer学习笔记1
  • 软件测试简历个人技能和项目经验怎么写?(附项目资料)
  • C语言运算符优先级和结合性一览表
  • Java8介绍
  • Java 基准测试
  • 普通护照出国免签及落地签国家和地区
  • 20230219 质心和重心的区别和性质
  • maven多环境配置
  • 设计模式之中介模式与解释器模式详解和应用
  • 2023年全国最新交安安全员精选真题及答案1
  • chrome插件开发备忘录
  • 实例1:控制树莓派板载LED灯闪烁
  • 华为OD机试题 - 最大排列(JavaScript)
  • 手动创建 vue2 ssr 开发环境
  • RHCE-操作系统刻录工具
  • PHP面向对象01:面向对象基础
  • 《爆肝整理》保姆级系列教程python接口自动化(十八)--重定向(Location)(详解)
  • MySQL的索引、视图
  • 【JavaWeb】网络层协议——IP协议
  • 【Python学习笔记】41.Python3 多线程
  • Windows 版本ffmpeg编译概述
  • NETCore下CI/CD之自动化测试 (详解篇)
  • Hoeffding不等式剪枝方法
  • 【算法】数组中的重复数字问题
  • 数值方法笔记2:解决非线性方程