计算机系统基础笔记(4)——整数

前言

博主已经有一周没有更新了==,博主来力^^。
我们先来整理一下思路
数据分为

  • 数值型
    • 浮点数(实数)
    • 整数
      • 无符号型
      • 有符号型
  • 非数值型
    • 字符型
    • 逻辑数据
    • 图形 声音 图像

第一部分 编码

我们先来了解一下编码,原补反码的知识链接在此~需要自取^^(这部分知识也很重要)

原补反码知识

1.整数的表示

下表表示了一些数据类型能表示的最值
观察可知,

  • char数据可视为整数 只有一个字节
  • 最小值和最大值的绝对值差一
  • 无符号数无最小值
    在这里插入图片描述

2. 二进制编码、无符号数和有符号数 定义

** 假设一个整数数据有w位,其二进制编码可以用w维向量表示(如下图)xi就是数位i上的0或1
在这里插入图片描述

  • 这是无符号数编码的定义
    在这里插入图片描述
    可见B2U(binary to unsigned)是一个二进制转无符号数的函数
    在这里插入图片描述
    看不懂没关系,我们看例子~
    在这里插入图片描述
  • 有符号数编码(补码,记住补码就是有符号数编码!!!

符号取决于最高位,所以如果这个数开头是1就说明是负数^^(C++课应该也会碰到捏)
在这里插入图片描述
同样看个例子
在这里插入图片描述

  • 常见无符号数有符号数编码
    在这里插入图片描述
    观察可知
    • 有符号数和无符号数的非负值编码相同
    • 每个编码都表示唯一的整数值
    • 可以反向映射
      在这里插入图片描述

3. 将整数转换为补码

仅限应用于可在编码表示范围内的数字

  • 如果该数字值非负 (If nonnegative),补码等于该值对应的二进制数(位长不足补0)
    在这里插入图片描述

  • 否则,其绝对值的二进制数逐位取反,并加1,符号位置1
    belike
    在这里插入图片描述

4.可表示的整数范围

这个就是数据表示最值的原理嘞
在这里插入图片描述
即(U无符号 T有符号)
在这里插入图片描述

5.其他的编码方式

  • 反码
    - 和补码的定义类似,区别是符号位的权重为(括号内多了一个负一)
    在这里插入图片描述

  • 原码
    - 和补码的区别是,符号位的作用仅用于决定其他位的位权为正/负(不影响数值大小)

第二部分 变换

一、有符号数与无符号数

1.有符号数转无符号数

可以利用强制转型
在这里插入图片描述

  • 注意:编码本身没有发生变化
  • 负数转换为一个(大)整数
    转换规律如下(w为位数)
    在这里插入图片描述

2.无符号数转有符号数

编码依旧不变
运算规则如下
在这里插入图片描述
从下图可以形象的看出特殊的情况(0和最大形式值,他们自身之间是相互对应的)
在这里插入图片描述

3.C语言中的有符号数和无符号数

  • 以下是常量的情况
    • 缺省情况下,所有的整数常量都是有符号数
    • 如果需要声明无符号数常量,需要增加一个后缀 “U”
  • 转换
    • 显式转换(即强制转型)
    • 隐式转换(即不同数据类型间的赋值)
  • 表达式求值
    • 混用无符号数和有符号数时,有符号数会被隐式转换成无符号数
      在这里插入图片描述

二、扩展与截断

1.位扩展

  • 无符号数:零扩展
    • 扩展后最高位的空位补0
  • 有符号数:符号位扩展
    • 扩展后最高位的空位原编码的符号位
      belike(即符号位是什么数字就补什么数字)
      在这里插入图片描述

2.数字截断

多余的位被直接丢弃(从最高位开始),belike
在这里插入图片描述

3.使用无符号数的情况

  • 位向量
  • 掩码
  • 地址
  • 高精度计算

第三部分 运算

1.加法

无符号数的加法规则

丢弃进位位等价于进行一次取模运算

在这里插入图片描述
表达成分段函数即

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

有符号数加法

  • 真实和共w+1位
  • 丢弃最高位
  • 将计算结果视为补码编码
  • 和截断
    • 如果大于等于2 w-1 ,变为负数
    • 如果小于–2 w –1 ,变为正数
      在这里插入图片描述
      POSOver和NegOver分别是正溢出和负溢出
      在这里插入图片描述

补充:阿贝尔群((可交换群、加群)

  • 具有封闭的加法运算
    在这里插入图片描述

  • 交换律
    在这里插入图片描述

  • 结合律
    在这里插入图片描述

  • 具有唯一的0元素
    在这里插入图片描述

  • 每个元素都有补元素
    在这里插入图片描述

2.有符号数的相反数

  • 使用取反和加法运算求相反数

~x + 1 == -x

在这里插入图片描述

3.乘法

范围

  • 无符号数最多2w位
  • 有符号数最小值最多2w-1位
  • 有符号数最大值最多2w位

无符号数乘法

  • 等价的模运算实现
    在这里插入图片描述

4.使用移位运算实现2的幂的乘法和除法

使用移位实现乘以2的幂

  • 左移即乘
  • 同时适用于有符号数和无符号数
    在这里插入图片描述

使用移位实现有符号数除以2的幂

  • 右移即除
    在大多数计算机上移位运算和加法运算比乘法运算快得多
  • 当u<0时会出现取整方向的错误
  • 修正:当u<0时,为 u 加上2 k -1
    • 由于要对其取模,相当于最终结果加1

补充 需要记忆的点

  • 常见无符号数有符号数编码
    在这里插入图片描述

  • 请记住2的零次方到十次方^^
    在这里插入图片描述

  • 一些重要的数字
    请记住-1和0!!!
    在这里插入图片描述

    • 有符号数-1的补码和U max 的编码相同
    • 0 的编码方式都相同,编码所有的位都为0

ending

就这样,我们下期再见^^

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值