我们为什么要使用补码?
来源:互联网 发布:c 递归算法 全排列 编辑:程序博客网 时间:2024/05/17 21:49
想必对于原码,反码,补码大家并不陌生,计算机专业的同学都会学到这方面的一些知识。
当初在学这部分的时候,只知道用补码可以解决0和-0的问题,但是还是没明白为什么会想到用补码。
前阵子看了斯坦福大学关于范式编程的公开课,里面老师讲了这方面的内容,三言两语给出了一个简单明了的解释,顿时觉得好棒!
思路如下:
我们主要要解决的问题就是负数的表示,而众所周知,绝对值相等的两个正负数之和为0。
假设我们有正数 0000 0000 0000 1111,我们如何表示其相反数呢?一般我们的思路是,找一个数,跟它相加的结果等于0,但是我们发现,要找出一个与它相加后结果等于0的数还是要略加思考一下的(因为要计算进位),所以,为何不找出一个与它相加后结果是1111 1111 1111 1111的数,然后该数+1即是我们所要的答案啦。
于是,很容易的, 0000 0000 0000 1111 + 1111 1111 1111 0000 + 1 = 1111 1111 1111 1111 + 1 = (1)0000 0000 0000 0000
一目了然,1111 1111 1111 0001 就是我们想要的答案了,那么我们是怎么得到这个相反数的呢?
首先,找出一个数与它加起来结果是全1的,这个数便是它的反码,然后这个数再加1,这便是它的相反数了,也是我们说的补码。
我们检验一下0的情况,0000 + 1111 + 1 =(1)0000,其中1111 + 1 = (1)0000 = 0000,即+0和-0的二进制表示均为0000。
一个小小的例子解释了为何补码需要原码取反之后再加1,是不是很神奇?
- 我们为什么要使用补码?
- 为什么要使用补码
- 为什么要使用原码、反码、补码
- 为什么要使用原码、反码、补码
- 为什么要使用原码、反码、补码
- 为什么要使用原码、反码、补码
- 为什么使用补码
- 我们为什么要使用linux
- 我们为什么要使用NodeJS
- 我们为什么要使用正版软件?
- 我们为什么要使用NodeJS
- 我们为什么要使用NodeJS
- 为什么我们要使用数据类型?
- 我们为什么要使用NodeJS
- 我们为什么要使用NodeJS
- 我们为什么要使用NodeJS
- 我们为什么要使用MQ
- 我们为什么要使用NodeJS
- DSP5509A——编译出现的问题解决
- C/C++中static、const的区别
- Python(x,y)科学计算包的安装
- (一)SQLite与SQL语句基础
- CUDA学习笔记三
- 我们为什么要使用补码?
- 我适合慢思考
- 怎样阅读文献
- O-C相关-09-id 类型与应用
- swift - The Prototype Pattern
- ArrayAdapter的简单使用
- 2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM
- 《中国人的性格》读书笔记
- (4.1.28)android之网络通信:HTTP、Socket、SOAP