计算机组成原理-数据的机器级表示与处理-定点数的逻辑、移位、加减运算


前言

本小节定点数的逻辑、移位、加减运算

一、C语言的运算到底有哪些?

1.1 概述

  1. 涉及到的定点数运算
  • 算术运算
    • 带符号整数运算:取负 / 符号扩展 / 加 / 减 / 乘 / 除 / 算术移位
    • 无符号整数运算:0扩展 / 加 / 减 / 乘 / 除
  • 逻辑运算
    • 逻辑操作:与 / 或 / 非 / …(比较简单,看下图就能理解)
      在这里插入图片描述

    • 移位操作:逻辑左移 / 逻辑右移

  1. 涉及到的浮点数运算:加、减、乘、除

1.2 移位操作(无符号、有符号)ps:浮点数没有

左移::x<<k; 右移: x>>k

  • 不区分是逻辑移位还是算术移位,由x的类型确定

  • 无符号数:逻辑左移、逻辑右移

    • 高(低)位移出,低(高)位补0,可能溢出!问题:何时可能发生溢出?如何判断溢出?
      若高位移出的是1,则左移时发生溢出
  • 带符号整数:算术左移、算术右移

    • 左移:高位移出,低位补0。可能溢出!
      溢出判断:若移出的位不等于新的符号位,则溢出。
    • 右移:低位移出,高位补符,可能发生数据丢失。

    1.3扩展与截断

    总结: 无符号数扩展补0;带符号数扩展补符号;小数扩展后面补0; 无符号、带符号截断阶段前面的数据;小数阶段后面的数据。
    在这里插入图片描述
    这个有可能发生,类型转换。在C语言中int可以与float互转,先把int写成32个16进制,然后进行规格化。如果有效位超过了23个(截断后面的),那么会丢失精度。


1.4 整数加减法

1.4.1全加器

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
计算机中无论是无符号整数还是带符号整数,都是采用ALU的方式进行加法运算。无符号整数是否溢出看CF(加法就看前面那一位,减法就将前面那一位取反)、带符号整数是否溢出看OF。

重要认识1:计算机中所有运算都基于加法器实现!
重要认识2:带符号数还是无符号数。加法器不知道所运算的是
重要认识3:加法器不判定对错,总是取低n位作为结果,并生成标志信息。
在这里插入图片描述

1.4.2 原码的加减运算

原码的加减运算也需要算,因为浮点数需要。看下面两个图片
在这里插入图片描述

在这里插入图片描述

1.4.3 移码的加减运算

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值