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

补码详细分析

补码引入

举一个生活化的例子
假设由一个挂钟,它只能顺时钟调时间,那么它调时间就分成了一下两种情况

  1. 正好顺时针调就能调好 如:时针从5调到9
  2. 需要逆时针调才能调好 如:时针从10调到7

在上面的情况中1是不用处理的,2我们可以下意识的想到顺时针转过12后再转到7.
诶,这就是计算机补码的思想,我们再用更详细的过程推到一下。

上面的10逆时针调到7记为 10 - 3 = 7
那么10顺时针调到7就是 10 + 2 = 12 再加 7 也就是加了9
原来10 - 3 在 表盘里与 10 + 9 是相等的,为什么?
这就要引入模运算了
取模就是取余数运算符为mod,如5 mod 2 = 1,也就是5 / 2 余 1
我们就可以发现
(10 - 3) mod 12 = 7 mod 12 = 7
(10 + 9) mod 12 = 19 mod 12 = 7
原来是 7 和 19 除以 12 的余数是相同的才有这样的结果
那么这个 9 也就是 -3 在这种情况下的补码
那么这个9是怎么的出来的呢?
( 10 − 3 ) m o d 12 = [ ( 10 m o d 12 ) − ( 3 m o d 12 ) ] m o d 12 = [ ( 10 m o d 12 ) + ( 12 m o d 12 ) − ( 3 m o d 12 ) ] m o d 12 = ( 10 + 12 − 3 ) m o d 12 (10 - 3) mod 12 \\ = [(10 mod 12) - (3 mod 12)] mod 12 \\ = [(10 mod 12) + (12 mod 12) - (3 mod 12)] mod 12 \\ = (10 + 12 - 3) mod 12 (103)mod12=[(10mod12)(3mod12)]mod12=[(10mod12)+(12mod12)(3mod12)]mod12=(10+123)mod12

原来是用12 - 3算出来的9

我们讲表盘中的数字列举出来
1 2 3 4 5 6 7 8 9 10 11 12
在将12换成0
0 1 2 3 4 5 6 7 8 9 10 11
这个12 就是这一串数字所能表达的最大数加一

那么补码 = 能表示的最大数加一 - 减数

补码

让我们根据上面的例子,将计算变成二进制的形式
假设有8为二进制数
能表示最大的数就是11111111
加一后就是100000000
如果要求出 -1010 的补码 绝对值就是00001010(因为上面是减去的3而不是-3)
就用100000000 - 00001010 = 11110110
所以 11110110 就是 -1010 的补码
验算:用10000 - 1010
00010000 - 00001010 = 00000110
00010000 + 11110110 = 100000110 = 00000110

总结更一般的公式

[ − x ] 补 = 2 n − x [-x]_补=2^n-x [x]=2nx

我们会发现用
11111111 - 00001010 = 11110101
正好是00001010的取反

11111111 = 2 n − 1 11111111=2^n-1 11111111=2n1
所以
( 2 n − 1 ) − x + 1 = 2 n − 1 (2^n-1)-x+1=2^n-1 (2n1)x+1=2n1

所以补码还可以这样算
[ − x ] 补 = [ x ] 反 + 1 [-x]_补=[x]_反+1 [x]=[x]+1

如:
[ − 1010 ] 补 = [ 00001010 ] 反 + 1 11110101 + 1 = 11110110 [-1010]_补=[00001010]_反+1 \\ 11110101+1=11110110 [1010]=[00001010]+111110101+1=11110110

相关文章:

  • 在Dify中使用Echarts生成一个图表
  • LabVIEW FPGA与Windows平台数据滤波处理对比
  • Leetcode 3493. Properties Graph
  • SpringCloud-consul
  • 好用的Markdown阅读编辑器Typora破解记录
  • Midscene.js自然语言驱动的网页自动化全指南
  • 航拍图像阴影自动检测去除算法研究(大纲)
  • C++——权限初识
  • 深度剖析:复制带随机指针的链表算法实现
  • C++STL(三) :list的模拟实现
  • 使用Kubesec检查YAML文件安全
  • Django项目之订单管理part5
  • 前后端+数据库的项目实战:hbu迎新网-较复杂(下)javaweb
  • 运费服务模块通用需求分析
  • 算法刷题整理合集(七)·【算法赛】
  • Java面试黄金宝典12
  • STM32基础教程——PWM驱动LED呼吸灯
  • 【数理基础】【概率论与数理统计】概率论与数理统计本科课程总结、资料汇总、个人理解
  • 《AI大模型开发笔记》企业RAG技术实战(二)
  • AI比人脑更强,因为被植入思维模型【19】三脑理论思维模型
  • 视频丨为救心梗同学缺席职教高考的小伙姜昭鹏完成补考
  • 李伟任山东省委常委、省纪委书记
  • 沃尔玛上财季净利下滑12%:关税带来成本压力,新财季价格涨幅将高于去年
  • 淄博一酒店房间内被曝发现摄像头,当地警方已立案调查
  • 李成钢:近期个别经济体实施所谓“对等关税”,严重违反世贸组织规则
  • 董军在第六届联合国维和部长级会议上作大会发言