美文网首页程序员C++
计算机中数的运算

计算机中数的运算

作者: Imentu | 来源:发表于2017-09-13 17:01 被阅读96次

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


算数运算

整数的算数运算

     所有类似于加减乘除的算术运算均适用于整数。不过,我们只讨论加和减。乘法(除法)运算可以在软件中通过连加(连减)的方法,或在硬件中通过其他技术实现。

     对整数的所有表示形式均可以进行加减运算,不过我们讨论二进制补码形式,因为当前的计算机均以这种方式存储整数。

加法:

     二进制补码中的加法就和十进制的加法一样:位与位相加,如果有进位,就加到下一位上。

溢出:

     溢出是指当试图把一个数存储在超过地址分配所定义的范围而发生的错误,当使用N个位进行二进制加法运算时,务必使每个数的结果在已定义的二进制补码表示的范围之内。

减法:

     二进制补码表示的一个优点就是它的加法和减法之间没有区别。在进行减法运算时,首先把减数取反,再与被减数相加。即:     a-b=a+(-b)


浮点数的算数运算

     浮点数也可以进行包括加减乘除在内的算数运算。但是我们只重点讨论加法减法,因为乘法和除法只是加法减法的多次重复运算。

     浮点数的加减法,再被IEEE标准格式规范化之后变得详尽而又复杂。我们在这里并不对其所有细节和特例进行分析,只是给出总体概述:

加法和减法:

浮点数加减法是同一个处理过程,步骤如下:

     1)检验符号

     a.如果符号相同,相加其绝对值,结果符号与他们相同。

     b.如果符号不同,比较绝对值,绝对值大的减去小的,结果符号取绝对值大的一方。

     2)移动小数点,使两者指数相同。也就是说,当指数不同时,数值小的一方将小数点左移,使数值相同

     3)将尾数进行加减运算(包括整数和小数部分)

     4)将规范化结果存入内存中

     5)检查是否溢出


逻辑运算

     一个位可能是0或1,可以假设0代表逻辑假,1代表逻辑真。这样,存储在计算机存储器中的位就能代表逻辑值真和假。

     如果逻辑运算作用在一个输入位上,就叫做一元运算,如果作用在两个输入位上,就叫做二元运算。

一元运算

     这里只讨论非运算符(NOT)

     非运算符只有一个输入(位模式)。它对位进行取反,即把0转换成1,1转换成0.

二元运算符

与运算符:

     与运算符是个二元运算符。输入两个操作数,输出为一个操作数。两个操作数对应的位数作为一组进行运算,当且仅当两位都是1时,结果为1,否则为0。如果有一个输入的位是0,则可不必再校验另一个输入数对应的位,直接得出结果为0。

或运算符:

     或运算符是个二元运算符,输入两个操作数,输出为一个操作数。两个操作数对应的位数作为一组进行运算,当且仅当两位都是0时,结果为0,否则为1。如果有一个输入的位是1,则可不必再教研另一个输入数对应的位,直接得出结果为1.

异或运算符:

     或运算符是个二元运算符,输入两个操作数,输出为一个操作数。两个操作数对应的位数作为一组进行运算,当且仅当两位相同时,结果为0,否则为1。

应用:

     三种二进制逻辑运算可以用于修改位模式。可以将指定的位复位,置位或者反转。位模式可以与另一个位模式进行与、或以及异或运算而被修改,这里另一个位模式就是所谓的掩码,掩码用于修改另一个二进制位模式。

1.使指定的位复位

     与运算符的一个应用就是把位模式的指定位复位(置0).为此,我们使用一个同样位长度的复位掩码。创建复位掩码的规则总结如下:

1)对于目标位模式中需要置0的位,掩码的相应位设为0

2)对于目标位模式中需要保持不变的位,掩码的相应位设为1

2.使指定的位置位

     或运算符的一个应用就是把位模式的指定位置位(置1).为此,我们使用一个同样位长度的复位掩码。创建置位掩码的规则总结如下:

1)对于目标位模式中需要置1的位,掩码的相应位设为1

2)对于目标位模式中需要保持不变的位,掩码的相应位设为0

3.使指定的位反转

     异或运算的一个应用是使指定位反转,也就是把指定位的值从0变成1,反之亦然。规则如下:

1)对于目标位模式中需要反转的位,掩码的相应位设为1

2)对于目标位模式中不需要反转的位,掩码的相应位设为0


移位运算

     另一种常用的位运算是移位运算,位模式可以被左移或是右移。右移运算去掉最右边的一位,再将每一位右移,同时在最左位插入0.左移反之。

     此运算常用语对操作数乘或除2的倍数

相关文章

  • 计算机中数的表示方法

    计算机中的数均以0和1组成各种编码,在计算机中参与运算的数有两大类: 无符号数和有符号数。计算机中的数均放在寄存...

  • 计算机中数的运算

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

  • java位移运算总结

    (1)计算中负数都是以补码形式进行存储的; (2)计算机中数的运算都是补码方式参与运算; (3)正数的原码、反码、...

  • 位运算(1) -- 移位

    位运算是二进制数的各种操作的统称, 本篇是移位操作. 计算机中的位运算操作都是以其补码参与运算 正数的三码(原码/...

  • 第五天,运算符和表达式

    运算符和表达式。 程序:人的想法,在计算机中的执行。 运算符:程序中,模拟人的想法的运算符号。 表达式:由变量,数...

  • 关于机器数和码制(源码、反码、补码)

    机器数和码制 各种数据在计算机中表示的形式称为机器数。机器数有无符号和带符号之分。 为了便于运算,带符号的机器数可...

  • C#double数据类型运算中的误差(乘以100得到的数据不准确

    计算机中double类型数据运算:71.1*100 !=7110? 我们有意思的发现:double类型的数71.1...

  • 神奇的二进制

    (在计算机中,数都是二进制来存储的,所以二进制的一些运算要比普通的等价运算(+,-,*,/)更快,更简单,所以知道...

  • iOS 除法运算结果一直是0的小Tip

    今天正好碰到除法运算结果一直是0的情况,所以记录下来,希望对大家有用。 示例 原因 计算机中的运算有个原则:相同数...

  • Java位运算学习

    概述 在学习位运算之前,先说下几个概念: 机器数:一个数字在计算机中的二进制表达形式就叫做机器数。机器数是有符号位...

网友评论

    本文标题:计算机中数的运算

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