计算机科学导论学习笔记(四)

第四章 数据运算

引言:第三章中,我们了解了计算机都可以存储哪些类型的数据。本章将讲述如何在这些存储在计算机的数据上进行运算。数据上的运算可以分为三大类:算术运算、位移运算和逻辑运算。

4.1 逻辑运算

 逻辑运算是指那些应用于位模式中的一个二进制位,或者两个模式中相应的两个二进制位的相同基本运算。这意味着我们可以在位层次模式层次上定义逻辑运算。

4.1.1 位层次上的逻辑运算

一个位可能使0或1,可以假设0代表逻辑假,1代表逻辑真,我们可以应用布尔代数中定义的操作去操纵二进制位。本节介绍4种运算:非(NOT),与(AND),或(OR),异或(XOR)。

(相关知识:布尔代数和逻辑电路)

非、与、或分别对应C语言中的“!”,“&&”,“||”

异或表示:如果输入相同,则输出为0;如果输入不同,则输出位1。

4.1.2 模式层次上的逻辑运算

相同的4个运算符可以被应用到n位模式。效果对于NOT来说,是把运算符应用到每一位;对其余三种运算来说,把运算应用到相应的位对。

例如: 10011000 AND 00101010 = 00001000

            NOT 10011000= 01100111

4种逻辑运算可以用于修改位模式。

(1)求反

NOT运算符唯一的应用就是求反。对模式应用此运算符把0变成1,把1变成0.

(2)复位

与运算的一个应用就是把位模式中指定的位进行复位(置0)。这种情况下第二个输入叫做掩码。掩码中的0位对第一个输入中相应的位进行复位。掩码中的1位使得第一个输入中的相应的位保持不变。

(3)置位

或运算的一个应用就是把位模式中指定的位进行置位(置1)。此时的掩码中,1位对第一个输入中的位进行置位,0位使得第一个输入中相应的位保持不变。

(4)反转

异或运算的一个应用就是把指定的位进行反转。此时掩码中的1位对第一个输入中的相应的位进行反转,0位使得第一个输入中相应的位保持不变。

4.2 移位运算

移位运算移动模式中的位,改变位的位置。能向左或向右移动。我们把移位运算分为两大类:逻辑移位运算和算术移位运算。

4.2.1 逻辑移位运算

逻辑移位运算应用于不带符号位的数的模式。原因是移位运算可能会改变数的符号。

1.逻辑移位

逻辑右移运算把每一位向右移动一个位置。在n位模式中,最右位被丢弃,最左位填0。同理逻辑左移丢弃最左位,最右位填0。

2.循环移位

循环移位对位进行移位,没有位丢弃或增加。循环右(左)移将每一位都向右(左)移动移位,最右(左)位填到最左(右)位。

4.2.2 算术移位运算

算术移位运算假定位模式使用二进制补码格式表示的带符号的整数。算术右移被用来对整数除以2;算术左移被用来对整数乘以2。这些运算不改变符号为。算术右移保留符号位,但同时也把它赋值,放入相邻的右边的位中。算术左移丢弃符号位,接受它右边的位作为符号位。如果新的符号为与原先的相同,那么运算成功;否则发生上溢或下溢,结果使非法的。

4.3 算术运算

算术运算包括加减乘除,适用于整数和浮点数。

4.3.1 整数的算术运算

本章只讨论整数的加法和减法。

1.二进制补码整数的加减法

二进制补码的优点是,加法和减法之间没有区别。遇到减法运算时,计算机只简单地把它转变成加法,但要为第二个数求二进制的补。

A-B=A+(B`+1)      B`+1表示B的补码

二进制补码的加法就像十进制一样:列与列相加,如果有进位,就加到下一列上。但是,最后一列的进位会被舍弃。

算法过程如下:

1)如果运算是减法,取第二个整数的补码;否则,转下一步

2)整数相加

2.符号加绝对值整数的加减法

流程如下:

1)检查运算,如果是减法,那么改变第二个整数B的符号

2)对两整数的符号应用XOR运算,如果结果S是0,意味着符号相同;否则符号不同

3)如果符号相同,Rm=±(Am+Bm),(Rm,Am和Bm表示R,A和B的绝对值),结果的符号与A、B都相同。此时应考虑,相加结果可能会发生上溢,需要报告并终止过程。

4)如果符号不同,Rm=±(Am-Bm),则从A中减去B,然后对符号进行判断。相减的过程为取第二个绝对值的二进制补码然后相加。结果的符号是较大绝对值的整数的符号。

4.3.2 实数的算术运算

以浮点数格式存储的实数的加法和减法被简化为小数点对齐后以符号加绝对值格式(符号和尾数的组合)存储的两整数的加法和减法。过程如下:

1)如果两数中任意一个为0,结果为另一个数,结束

2)如果运算时减法,那么改变第二个数B的符号来模拟加法

3)通过在尾数中隐含的1和增加指数,将两个数去规范化

4)然后统一指数,即增加较小的指数,移位相应的尾数,直到两个数具有相同的指数。

5)现在把每个数的符号和尾数的组合看成一个符号加绝对值格式的整数。两个整数相加

6)最后,再次规范化数

 

 

 

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值