【CMU|深入理解计算机系统】Bits,Bytes and Integers

Lecture 2:Bits,Bytes and Integers

#1 everything is bits

  1. Each bit is 0 or 1
  • 计算机中采用二进制进行信息表示,虽然在很多时候这需要转换,例如,十进制在生活中更为常见:十个手指…
  • 实际上也只有宾夕法尼亚大学建立的第一台电子计算机ENIAC使用十进制进行算数运算,使用十个电子管来表示每个数字,通过控制电子管的开关来表示10个数字中的其中一个。
  1. Importance of bits
    ——By encoding/interpreting sets of bits in various ways

①在数字世界中,可以采取其他方式的模拟信号对比特进行量化。

e.g.比如下图,用低电压表示0,高电压区间表示1,即使电路中可能存在噪音或不完善的地方或者其他干扰;只要不超过设定的阈值,我们依然可以得到一个很清晰的0/1信号。
在这里插入图片描述

②数字存储

存储一位信息或一个数字值比存储一个模拟值要容易得多。


#2 Encoding Byte Values

  1. 比特的分组计算

因为对一个冗长的二进制串进行计算往往不具有可行性和可观性。

我们通常将4比特的数据集合分组,使用16进制表示【0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F】

  1. About Bytes
    在这里插入图片描述
    在这里插入图片描述
  2. Example Data Representations
    在这里插入图片描述

①事实上,不同类型的数的占位往往还与特定的机器和编程语言有关。在编程使用前,应该先详细了解相关规定。

虚拟地址空间是由机器字长决定的
当人们讨论到这是一个64位机器的时候,真正的含义是这些地址是64位值或8字节的。


#3 Bit-level manipulations

  1. Boolean Algebra
  • 之前的内容让我们明确了,计算机中用二进制表示数据,不同类型数据占用不同长度。
  • 接下来考虑位级运算,其中最基础的知识就是布尔代数
  • 布尔代数在1850年前后由George Boole的人提出,具体描述比特之间的关系
    p.s.在当时并没有“比特”这样的概念

(1)布尔代数是对逻辑的抽象:把True编码成1,把False编码成0。

(2)基本的位运算:AND OR NOT NOR
在这里插入图片描述
(3)对比特向量进行相应操作
——就是对比特串的每一位按照运算规则进行操作
在这里插入图片描述


  1. Representing & Manipulating Sets

人们喜欢使用布尔代数进行逻辑运算,也在于,这是一种隐式的表示数值集合的方式。

(1) 集合的表示
在这里插入图片描述

  • 对于长度为w的一个比特串可以表示对于w个元素的包含情况。

  • 某一对应位为0,表示该元素不存在;某一对应位为1,表示该元素存在。

(2)集合上的操作
在这里插入图片描述

  • 在这种情况下,AND相当于求交集;OR相当于求并集;NOR相当于是对称差异;而NOT就是补集
  • 这些操作在我们处理文件I/O时很常见

  1. Shift Operations
    在这里插入图片描述

左移只有一种;而右移往往分为逻辑右移和算数右移。

  • 在逻辑右移中,始终用0填充空值。
  • 在算数右移中,填充的符号根据原来数字的符号位决定。

#4 Intergers

#4.1 Representation:unsigned and signed

  1. Encoding Integers
    在这里插入图片描述
    上面公式中代表的核心思想是按权对位进行加和运算。
    有符号和符号方案只是对于最高位的赋权不同。

    E.g.
    在这里插入图片描述

也正因为此,在有符号表示方案中,最高位也称为符号位。


  1. Numeric Ranges

p.s.其中U表示无符号数(原码),T表示有符号数(补码)

在这里插入图片描述

在这一部分,教授提出了两点见解。

其一,可能很多人对于给定位数的二进制串中最小的数的补码表示,没有建立直观印象。

如果想一想各个位的权重,只有首位是负的,I其他位都是正的,自然只有1000…0这样的补码串代表的数值最小。


**其二,**如果不想迷失在n位表示的符号数/无符号数的数值范围的公式中,最可行的方法就是在n比较小的时候,直接推导,再将规律泛化。


  1. Sign Extension

概述:通过讲述了符号数和无符号数,这里引出最后一类位操作——符号拓展。

所谓符号拓展是针对补码表示的二进制串而言,核心思路是希望可以找到一个措施,使得在拉长二进制串的同时不改变其数值的大小。

在这里插入图片描述
基本方法就是,将符号位复制在串的左部。
在这里插入图片描述

通过复制这种符号的方式,可以看到它给了两倍的权重,将原来的符号位变成了正数,因此没有改变总和的净效益。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值