计算机组成原理实验报告:数据表示与运算

需积分: 0 0 下载量 19 浏览量 更新于2024-08-05 收藏 329KB PDF 举报
"161630216_李元成_lab11 - 计算机组成原理实验报告" 这篇实验报告详细介绍了南京航空航天大学计算机科学与技术学院计算机组成原理课程的一系列逻辑运算问题及其解决方案。实验包含了六个题目,涉及了基本的逻辑门电路、位操作以及条件表达式在编程中的实现。 1. **位非门(bitNor)**: 或非门(NOR gate)是逻辑运算的一种,其功能是对输入的两个位进行逻辑或运算后再取反。解题思路是根据摩根定律,将或非门转换为非a与非b的逻辑表达式。源代码中,这一操作通过位运算实现。 2. **位异或门(bitXor)**: 异或门(XOR gate)是另一个逻辑运算门,当输入的两个位不同时,输出为1;相同时,输出为0。编码时,需要计算非x与y和x与非y的异或结果。同样,解题代码会使用位运算来实现这一功能。 3. **偶数位检查**: 题目要求判断一个二进制串的偶数位是否都为1。通过多次移位操作,将偶数位与偶数位相与,奇数位与奇数位相与,最后检查结果是否为1,从而确定所有偶数位是否全为1。 4. **位交换**: 此题需要交换二进制数x的n和m字节位置。解题思路是先提取n和m位,利用位移操作,然后清除原x上的这两个字节,最后将提取的值放回。源代码中,会包含位移和位与操作。 5. **乘5/8并处理溢出**: 乘5可以通过乘4再加上自身来实现,而除8则可以通过右移操作。然而,对于负数,右移会导致结果向下取整,不同于除法的结果向0取整。因此,如果处理负数,需要通过添加一个补偿值(如7)来修正结果。 6. **三元运算符(C语言中的x?y:z)**: C语言中的三元运算符用于条件判断,相当于一个简化的if-else语句。通过将x取反,可以将其转化为0和1,进而控制y和z的选择。源代码会展示如何通过位运算和加法来实现这一逻辑。 这些题目展示了计算机底层逻辑运算的运用,以及如何在编程中通过位操作实现逻辑功能。对于学习计算机组成原理和深入理解二进制逻辑运算的学生来说,这样的练习是非常有价值的。