美文网首页程序开发
计算机中的减法运算

计算机中的减法运算

作者: Zentopia | 来源:发表于2017-01-15 22:31 被阅读154次

学习过计算机组成原理的同学可能知道,虽然我们可以让计算机做减法运算,但是计算机内部实际上是在做加法运算。因为加、减、乘、除四则运算都可以分解成加法运算和位移运算,而且计算机也只会处理这两种简单的运算,所以计算机内部会通过一个叫作加法器的电子元件来处理减法运算。

将减法运算转换为加法运算就要用到负数,但是计算机只认识二进制数字,并不认识符号“-”。为了表示负数,人们就规定二进制数的最高位为符号位,符号位是 0 时表示证书,符号位是 1 时表示负数。

举个例子,1 如果用 8 位二进制数来表示的应该是 00000001,最高位也就是左边第一位是 0。那么很同学肯定会觉得 -1 的二进制数应该是 10000001,这样表示会有什么问题呢?我们都知道 1 +(-1) = 0, 但是 00000001 + 10000001 = 10000001,而忽略符号位后,10000001 的表示的十进制数是 1,这显然是不对的,正确答案其实是 11111110。很多同学肯定会有疑问,11111111 去掉符号位后表示的十进制数不是 126 吗?1 的负数怎么可能是126 呢?先别急,我们把 11111111 称作 00000001 的补数。

补数又称为补码,是为了在计算机中表示负数而定义的概念。将一个二进制数的各个位上的数值取反然后再将结果加 1,就可以得到这个二进制数的补数。然后我们来看一下 1 + (-1) 的二进制计算过程: 00000001 + 11111111 = 100000000,得到的是一个 9 位的二进制数,比原来的 8 位多出了 1 位,由于硬件物理上的限制计算机会忽略掉最高位的溢出。因此在计算机看来相加的结果是 00000000,这也就满足了 1 + (-1) = 0。同理,对一个二进制负数求补数,就可以得到相应的正数。

相关文章

  • 计算机中的减法运算

    学习过计算机组成原理的同学可能知道,虽然我们可以让计算机做减法运算,但是计算机内部实际上是在做加法运算。因为加、减...

  • JS 加、减、乘、除运算避免浮点数

    加法运算 减法运算 乘法运算 除法运算

  • OpenCV-Python学习(七):图像的基本运算及mask掩

    目录: 1.图像的基本运算加、减法图像混合按位运算 2.mask掩膜 一、图像的基本运算 加、减法 饱和运算:当运...

  • 1.7 openCV-python 图像运算

    学习图像上的算术运算,加法,减法,位运算等。 按位运算

  • 计算机中数的运算

    上篇讲到计算机中数字都是以二进制存储的,这篇我们讲讲计算机中如何进行对这些数据进行运算。计算机中的运算可以分为两...

  • NumPy基础之矩阵的运算

    矩阵运算 矩阵运算包括矩阵的加法、减法、乘法(相乘与点乘)、矩阵的转置等,接下来详细讲解矩阵运算。 矩阵的加减法,...

  • JS运算解析--减法和按位取反

    一、JS减法 规则 对于JS的减法运算,整体规则是当运算符两边的运算元不为Number时,转换为Number再计算...

  • 为什么混合运算要先乘除后加减?

    加法、减法、乘法、除法统称为四则混合运算。加法、减法在代数中表示比较简单,低级的运算,所以加减混合为一级运算...

  • PHP运算符

    一、算术运算符 算术运算符用于完成各种运算; + 加法运算符 $a + $b - 减法运...

  • java(4-运算符)

    自增自减运算符 前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。后缀自增自减法(a+...

网友评论

本文标题:计算机中的减法运算

本文链接:https://www.haomeiwen.com/subject/rfsubttx.html