CSSAPP稀里糊涂的读书笔记(二)信息的表示和处理

本文深入探讨了计算机如何通过位和字节序列编码信息,包括无符号和补码整数、浮点数的不同编码方式,以及小端法和大端法在多字节数据存储中的应用。同时,讲解了虚拟内存、字长对虚拟地址空间的影响,以及IEEE浮点标准下不同数据类型转换的原理。

本章主要讨论编码。

  1. 计算机将信息编码为位(比特),通常组织成字节序列。有不同的编码方式用来表示整数、实数和字符串。不同的计算机模型在编码数字和多字节数据中的字节顺序时使用不同的约定。

  2. 无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数字。补码(two’s-complement)编码是表示有符号整数的最常见的方式,有符号整数就是可以为正或者为负的数字。浮点数(floating-point)编码是表示实数的科学计数法的以2为基数的版本。

  3. 机器级程序将内存视为一个非常大的字节数组,成为虚拟内存。内存的每个字节都由一个唯一的数字来标识,称为它的地址,所有可能地址的集合就称为虚拟地址空间。

  4. 每台计算机都有一个字长,指明指针数据的标称大小。因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。

  5. 在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的地址。

  6. 某些机器选择在内存中按照从最低有效字节到最高有效字节的顺序存储对象,称为小端法(little endian);而另一些机器则按照从最高有效字节到最低有效字节的顺序存储,称为大端法(big endian)。
    123456
    小端法:56 34 12
    大端法:12 34 56

  7. 各种关于补码,整数的有无符号的原理和推导,又多又杂,理解起来还很困难,所以这里就不总结了,还是看书比较好。

  8. 表示数字的有限字长限制了可能的值的取值范围,结果运算可能溢出。补码表示提供了一种既能表示负数也能表示正数的灵活方法,同时使用了与执行无符号算术相同的位级实现,这些运算包括像加法、减法、乘法,甚至除法,无论运算数是以无符号形式还是以补码形式表示的,都有完全一样或者非常类似的位级行为。

  9. IEEE浮点标准
    在这里插入图片描述
    在这里插入图片描述

  10. 当在int、float和double格式之间进行强制类型转换时,程序改变数值和位模式的原则如下(假设int是32位的):

  • 从int转换成float,数字不会溢出,但是可能被舍入。
  • 从int或float转换成double,因为double有更大的范围(也就是可表示值得范围),也有更高得精度(也就是有效位数),所以能够保留精确的数值。
  • 从double转换成float,因为范围要小一些,所以值可能溢出成正无穷或负无穷。另外,由于精确度较小,它还可能被舍入。
  • 从float或者double转换成int,值将会向零舍入。进一步说,值可能会溢出。
STM32(意法半导体)是一种广泛应用于嵌入式系统的微控制器平台。下载指的是将开发好的程序或固件烧录到STM32芯片内部的过程。 当使用STM32进行下载时,如果没有正确地设置或操作,就会出现稀里糊涂的情况。下载过程通常涉及到软件硬件两个方面: 软件方面,首先需要选择合适的集成开发环境(IDE),例如Keil、IAR Embedded Workbench等,然后配置好开发环境中的下载工具。如果下载工具与芯片型号连接方式不匹配,就会遇到下载失败或出现稀里糊涂的问题。 硬件方面,确保正确连接下载工具目标STM32芯片,通常使用 JTAG 或 SWD 接口进行连接。如果连接错误或接触不良,也会导致下载失败或出现错误。 解决这种稀里糊涂问题的方法通常包括以下几步: 1. 检查软件设置:确认使用的IDE下载工具版本与STM32芯片兼容;检查下载器芯片连接设置是否正确。 2. 检查硬件连接:确保下载器正确连接到目标STM32芯片的JTAG或SWD接口上,并保持稳定的连接。 3. 引脚映射:检查芯片上的引脚映射是否正确,确保下载器与芯片之间的引脚对应正确。 4. 重启复位:尝试对STM32芯片进行复位操作,或重新启动开发环境下载工具。 如果以上方法都无效,可以尝试换用其他下载工具或IDE进行下载,或者咨询相关技术支持进行帮助。总之,稀里糊涂的STM32下载问题通常是由设置错误、连接问题或软硬件不兼容等原因引起的,通过仔细检查调试可以解决。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值