博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原码 补码
阅读量:6827 次
发布时间:2019-06-26

本文共 626 字,大约阅读时间需要 2 分钟。

整数在计算机中都是以二进制的方式存储的,比如 2 = 0000 0010。最高位是符号位。0表示正数,1表示负数。正数的情况非常easy理解。可是负数存储的是补码 ,-2 = 1111 1110。

(一) 概念

以8位的字长为例
正数补码==原码
负数补码为。除符号位外取反,然后加1

+2 =  0000 0010[原码] = 0000 0010[补码] -2 =   1000 0010[原码] =  1111 1110[补码]

(二) 为什么要用补码

补码是为了解决减法的问题。由于二进制表示中最高位是符号位。假设要让计算机电路在计算过程中识别符号位。会让电路变得复杂。所以干脆让符号位直接參与运算。

  • 2 + 3 = [0000 0010] + [0000 0011] = [0000 0101] = 5
  • 2 - 3 = 2 + (-3) = [0000 0010] + [1000 0011] = [1000 0101] = -5

显然。在减法的情况下会出问题。假设换做补码的话

  • 2 + 3 = [0000 0010] + [0000 0011][补码] = [0000 0101][补码] = 5
  • 2 - 3 = 2 + (-3) = [0000 0010][补码] + [1111 1101][补码] = [1111 1111][补码] = [1000 0001][原码] = -1

非常好的攻克了减法的问题,将加法和减法合并为了一套电路。

转载地址:http://crukl.baihongyu.com/

你可能感兴趣的文章
setprecision **fixed
查看>>
JVM系列五:JVM监测&工具[整理中]
查看>>
局部自适应自动色阶/对比度算法在图像增强上的应用。
查看>>
CMD命令
查看>>
Spring中@Autowired与@Resource的区别
查看>>
Python 学习笔记 -- 类和实例
查看>>
Android 静默安装/后台安装
查看>>
java 非空判断类
查看>>
【html5】如何让Canvas标签自适应设备
查看>>
SecureCRT最佳配色方法+直接修改默认配置方法 - imsoft.cnblogs
查看>>
通俗地介绍下---数据结构之堆
查看>>
JQuery实现简单的服务器轮询效果
查看>>
2017.6.26 工作记录
查看>>
“Too many open files” 小记
查看>>
《Effective C#》读书笔记——条目4:使用Conditional特性而不是#if条件编译<C#语言习惯>...
查看>>
浅谈异常与恋爱
查看>>
分享:http-watcher更新,改进对动态web程序的支持
查看>>
设计模式---->经典设计模式一览
查看>>
Asp.Net生命周期系列一
查看>>
Spark源码分析 – Deploy
查看>>