《深入理解计算机系统》学习笔记(二)1.4~1.6

本文介绍了《深入理解计算机系统》中的相关内容,包括C语言中字符串的表示,以nul字符结尾的ASCII编码,以及字符串在不同平台上的平台独立性。接着,探讨了代码表示的多样性,指出二进制代码通常不具备跨平台兼容性。最后,简要概述了布尔代数,它是计算机编码和逻辑运算的基础,布尔运算如AND、OR和异或在逻辑推理和数字系统设计中至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《深入理解计算机系统》学习笔记(二)
1.4 表示字符串
  C语言中字符串被编码为一个以nul(其值为0)字符结尾的字符数组。每个字符都由某个标准编码来表示,最常见的是ASCI字符码。因此,如果我们以参数“12345”和6(包括终止符)来运行例程show. _bytes, 我们得到结果31 32 33 34 35 00。请注意,十进制数字x的ASCII码正好是0x3x,而终止字节的十六进制表示为0x00。在使用ASCII码作为字符码的任何系统上都将得到相同的结果,与字节顺序和字大小规则无关。因而,文本数据比二进制数据具有更强的平台独立性。
  ASCⅡ字符集适合于编码英语文档。Java编程语言使用Unicode来表示字符串。对应C语言也有支持Unicode的程序库。

1.5 表示代码
考虑下面的C函数:
在这里插入图片描述
  我们发现指令编码是不同的。不同的机器类型使用不同的且不兼容的指令和编码方式。即使是完全一样的进程,运行在不同的操作系统上也会有不同的编码规则,因此二进制代码是不兼容的。二进制代码很少能在不同机器和操作系统组合之间移植。
  计算机系统的一个基本概念就是,从机器的角度来看,程序仅仅只是字节序列。机器没有关于原始源程序的任何信息,除了可能有些用来帮助调试的辅助表以外。

2.1.6 布尔代数简介
  二进制值是计算机编码、存储和操作信息的核心,所以围绕数值0和1的研究已经演化出了丰富的数学知识体系。这起源于1850 年前后乔治.布尔(George Boole, 1815- -1864)的工作,因此也称为布尔代数(Boolean algebra)。布尔注意到通过将逻辑值TR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值