关于补码原理机制详解
Posted 小黑的芒果
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于补码原理机制详解相关的知识,希望对你有一定的参考价值。
在计算机中,我们使用补码来描述负数与正数。但许多人都不明白为什么这样做,大家都只知道正数的补码是它的本身,负数的补码是取反加1。但是为什么我们需要补码这个东西?许多人可能都不太明白。其实引用补码的目的是为了解决计算机运算中减法问题。由于计算机不是人,所以无法区分加法与减法,所以我们需要引入一种运算规则同时满足加法与减法运算规则。补码由此诞生。
对于计算机而言加法易于实现,所以计算机中有加法器。那么如何利用加法器完成减法运算就是一个需要解决的问题。
在计算过程中我们常常强调要避免结果数据溢出(即计算结果超过数据的表示范围),然而我们就是通过数据溢出来实现减法运算。
大家可能会发现一个有意思的现象一个字节的表示范围是-128~127;恰好为2^8个数字。这不是巧合,正是如此设计才实现了减法运算通过加法来实现。
首先举一个简单的例子:
1111 1101 // -3 (一字节)
+ 0000 0111 // 7
--------------------
1 0000 0100 // 等价于 0000 0100 // 4
//前面的1溢出,所以结果为4
看到这儿有的小伙伴可能已经明白了,通过溢出用加法来实现减法运算。但是我们怎么表示负数。所以接下来的问题就是用什么来表示负数可以实现这种方法。
看到这儿小伙伴们可能已经猜出来。我们可以通过距离溢出还需要加多少个数值来表示这个负数。
因为差的数值需要另一个加数来补上。
例如一些例子:
-12(差12就可以溢出) ——————> 1111 0100(-12补码)
-1 (差1 就可以溢出) ——————> 1111 1111 (-1 补码)
1111 1101 // -3 需要数值3才可以溢出
+ 0000 0111 // 7 提供数值3
--------------------
1 0000 0100 // 4 结果
综上,补码可以通过加法运算来实现减法运算。
觉得博主写的通俗易懂的可以点赞关注!!!你们的支持就是我创作的动力呀!!!加油!!
以上是关于关于补码原理机制详解的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop详解——HDFS的命令,执行过程,Java接口,原理详解。RPC机制