计算机科学导论笔记-数据运算
- 逻辑运算
逻辑运算是指应用在一个二进制位上或两个模式中想应的两个二进制的相同基本运算。- 位模式上的逻辑运算符
一般来说,会规定0代表逻辑假,1代表逻辑真,我们有四种定义在位层次上的运算,NOT,AND,OR,XOR,下面的图显示了四种运算不同的输入或者输出
其他三个都很熟悉,但是第四个异或,其实就是相同为假,不相同为真,可以用
这个式子来代替,实际上判断是否相同,就是看其中一个数取反后是否和另一个数相同,如果相同,说明原来是不同的数,不同的是真,如果相同就为假。
- 位模式上的逻辑运算符
- 模层次上的逻辑运算
模层次上的运算规则其实是一样的,直接上图:
四种逻辑运算可以修改位模式
-
求反:可以将每位转换到相反的位上
-
与运算:可以将指定的位复位
与运算可以将指定的位归零,比如我有一个10100110的位模式,现在我要将前五位归零,那么就写入一个00000111的位模式,这时候我们称这个位模式为掩码。
可以看到前五位变为0 -
或运算,对指定的位 置位
或运算说白就是让指定的位变为1
-
异或:使指定的位翻转
这个效果和求反是一样的,只不过异或是指定位求反,
-
-
移位运算
移位运算改变位模式中的位的位置,分为逻辑移位和算术移位-
逻辑移位
逻辑移位只能移位不带符号的位存储模式,因为移位可能会改变数的正负,逻辑移位又分为逻辑移位和循环移位-
逻辑移位
位模式向左或者向右移位一位,空出来的位直接填0 -
循环移位
循环移位就是将移出去的位不丢弃,移动到空出来的位上
-
-
算术移位运算
算术的移位运算是针对二进制补码格式的带符号位整数。算术右移除于2 ,算术左移乘以2,这种情况下有可能发生上溢或者下溢。算术右移复制符号位到最右,算术左移丢弃最左位,最右补0原数-103,新数-52,除2取整的结果
算术左移。
-
-
算术运算
这个运算包括加减乘除等-
二进制补码的整数的加减法
这个问题其实上一章已经讲过了,总的来说就是减法变加法。
先判断被减数是不是负数(实际上负数就是减法),如果是,那么求补码,如果不是,那就正常加 -
符号加绝对值
这个就有点复杂了,一共有两个符号,但是也有两个运算符,一共四个符号,但是我们可以通过判断符号来筛选合适的计算方法
首先,判断是加还是减,减的话,被减数符号位取反,然后进行异或运算判断两边是否符号相同,如果相同就走右边,就把两个绝对值相加,如果溢出了,就停止,没有就得到最终值
如果不相同,那就去被减数的补码,相加,这里要做一个判断,要看有没有上溢,如果上溢了,说明结果是正数,丢弃上溢位,取A的符号位,如果没有上溢,就去B的符号。 -
实数的加减法
首先如果A和B两个数其中有一个为0,那么都终止运算。如果是减法,还是将B的符号取反,然后同时规范化两个数,然后调整位数,使其格式一致然后相加符号和尾数,如果上溢,就右移尾数,增加指数,如果没有再次规范化之后得到结果。
-