前言:关于二进制数的补码反码等各种码,上学时候只学会了死记硬背却还是一头雾水,不懂这样设计的意义。所以总是隔很多时间后还是记不住,今天就尝试用自己的理解解释下正负数以及补码的设计,如果有不对的地方或者有更好的解释,欢迎各位大佬指出。


1. 二进制中的“0”

  对于二进制数据的解释,位数极其重要。比如:0x000x100在被当作两个字节数据读取是,分别是0256;在只读取一个字节时,都被解释为0


2. 正负数满足的条件

  现假设我们有8位二进制位表示十进制数,可表示的十进制数共有282^828种。
  若我们用AAA表示其中一个二进制数,A′A'A′表示其中另外一个二进制数,并且AAA和A′A'A′是这个范围内完全不同的数,想要满足一个条件:A+A′=0A+A'=0A+A′=0。
  只有一种情况可以满足,即0其实为0x100。AAA和A′A'A′相加后,满足了二进制加法进位,最高位溢出,对于机器平台定义的8位二进制数据来说,还是相当于0。
  若想在282^828个数的范围中表示正负数,若AAA表示这个范围中的一个正数,A′A'A′表示这个数的相反数,则他们满足:
A+A′=0=sum,(sum = 0x100)A+A'=0=sum\text{,(sum = 0x100)} A+A′=0=sum,(sum = 0x100)
  计算负数A′A'A′的表示为:A′=0−A=sum−AA'=0-A=sum-AA′=0−A=sum−A


3. 按位取反的数学意义

  在上述例子中,对一个八位二进制数AAA按位取反得到A′′A''A′′,AAA和A′′A''A′′满足:A+A′′=0xFF=sum−1A+A''=\text{0xFF}=sum-1A+A′′=0xFF=sum−1,同时也有A=sum−1−A′′,A′′=sum−1−AA=sum-1-A'',A''=sum-1-AA=sum−1−A′′,A′′=sum−1−A


4. 补码的设计

  对于一个8位二进制,对其计算采用8位范围内的数据范围,可得上述公式有:
A′=sum−AA′=sum−1−A+1=(sum−1−A)取反操作+1A=sum−A=(sum−1−A′)取反操作+1A'=sum-A \\ A'=sum-1-A+1=(sum-1-A)_{取反操作}+1 \\ A=sum-A=(sum-1-A')_{取反操作}+1 A′=sum−AA′=sum−1−A+1=(sum−1−A)取反操作​+1A=sum−A=(sum−1−A′)取反操作​+1
即补码的设计:

  • 负数 = 正数取反 + 1
  • 正数 = 负数取反 + 1

小结:若一个n位的二进制数,可表示2n2^n2n种数。若AAA是其中一个数,对AAA取反是求2n−1−A2^n-1-A2n−1−A。AAA的相反数是2n−A=2n−1−A+1=A取反+1=对A求补2^n-A=2^n-1-A+1=A \text{取反}+1= \text{对} A \text{求补}2n−A=2n−1−A+1=A取反+1=对A求补

计算机系统基础知识——详解二进制正负数及补码设计相关推荐

  1. 【BLE】OTA基础知识详解

    [BLE]OTA基础知识详解 一. 概念 1. 缩写 BIM Boot Image Manager , the software bootloader CRC cyclic redundancy ch ...

  2. R语言基础知识详解及概括

    R语言基础知识详解及概括 目录 R语言基础知识详解及概括 R数据可视化示例 R语言进行数据创建

  3. R语言可视化绘图基础知识详解

    R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...

  4. 计算机网络相关知识 参考博客 子网掩码怎么理解 网关及网关的作用 路由器基础知识详解

    子网掩码怎么理解 https://blog.csdn.net/farmwang/article/details/64132723 网关及网关的作用 https://blog.csdn.net/zhao ...

  5. RabbitMQ基础知识详解

    RabbitMQ基础知识详解 2017年08月28日 20:42:57 dreamchasering 阅读数:41890 标签: RabbitMQ 什么是MQ? MQ全称为Message Queue, ...

  6. Android随机点名器,Excel基础知识-详解随机点名器

    说道制作个案例纯粹意外,我多少有点选择恐惧症,为了不在"选择"上纠结,就自己小玩了一下,就用了程序做了个选择器,其实很简单,就是有小时候玩的"点兵点将",稍微变 ...

  7. Python基础知识详解 从入门到精通(八)魔法方法

    目录 Python基础知识详解 从入门到精通(八)魔法方法 什么是魔法方法 基础魔法方法(较为常用) 比较操作符 算数运算符 反运算(类似于运算方法) 增量赋值运算 一元操作符 类型转换 上下文管理( ...

  8. 网络管理之基础知识详解

    网络管理之基础知识详解 目录 3.1 网络的特征 3.2 拓扑结构 4.1 OSI简介 4.2 数据传输过程 4.3 分层作用 4.4 PDU 5.1 单播 5.2 多播 5.3 广播 5.4 三种通 ...

  9. 工业相机基础知识详解

    工业相机基础知识详解 工业相机是机器视觉系统的一个最关键的组件.他的功能很简单,就是将被检测的物体拍摄下来,然后转换成电脑可以识别的图像,以便以后进行图像处理,从而完成检测任务.工业相机俗称工业摄像机 ...

最新文章

  1. onclick事件执行2次
  2. 一个Portal处理流程
  3. 移动时代的互联网格局变化
  4. pycharm 安装与激活
  5. php yield mysql_PHP 5.5 新特性关键字 yield
  6. 移动建模平台元数据存储架构演进
  7. 记一次奇怪的debug:Tomcat部署网站每一个页面第一次打开404刷新后才正常显示...
  8. Cocos2d-x 地图行走的实现3:A*算法
  9. 2W+汉字转拼音JS字库(UTF-8生僻字等通用无乱码)
  10. MD文件阅读工具及配置
  11. FOC电机控制之SVPWM原理与实现
  12. VMware 运行出现“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”解决方案
  13. 基于51单片机步进电机控制
  14. SCI论文的构思与常用结构
  15. Cheat Engine(CE)-----下载安装及入门
  16. 一文扫尽检测类评估指标:AP、mAP、ReCall、OKS和IoU
  17. Property visible must be accessed with $ or _ are not proxied in the Vue instance to prevent错误
  18. 怎么从H5广告页内复制微信号直接调起微信客户端添加好友
  19. python: npy数据写入excel文件
  20. hpm128无法共享打印_HP M128fn打印机共享后无法打印

热门文章

  1. android 不生成odex文件方法
  2. Android唤醒屏幕
  3. android之app自动启动
  4. Vue之import
  5. layui select change事件_一道2020年全国生物学联赛试题背后的“眼齿鸟事件”
  6. oracle的约束什么作用,Oracle数据库知识之约束
  7. vue怎么实现手风琴效果_Vue中使用v-for制作动态手风琴效果
  8. vue v-model指令
  9. java中fackeditor_ckeditor高级定制之发文模板
  10. String 类型ID 获取