CSAPP translation page 1
1.1信息就是位(bits)+上下文(context)
我们的hello 程序生命开始就是一个源程序(或者称为一个源文件),创造它的程序员编辑并且把它保存为一个称为hello.c文本文件.这个源程序是一个里面的内容是0和1的位序列(sequence),8个位(bytes)被组织成一组(chunck),每一个字节代表程序里面的一些文本字符(text character).
(扩展:
一个位由0或1组成,8个位为一个字节Byte,每个字节表示程序中的某些文本字符,两个字节称为一个字Word-双字节,四个字节称为双字Dword-四字节
单字节和双字节:单字节只占1个英文字符;双字节是占两个英文字符,中文字符都占两个字节,4字节是指占四个英文字符,中文占两个字节也就是两个英文字符.
字节的换算:
1B/byte(字节)=8 bit(比特)
1KB(千字节)=1024B/byte(字节)
1GB=1024MB
1TB=1024GB
1PB=1024TB
1EB=1024PB
比特和位:
比特(bit)和位实际上是同一个东西,计算机智能处理二进制数据流,二进制的0和1就代表一个位.计算机中的32/64位置计算机的cpu一次能处理的最大位数.8字节等于64位,也就是说cpu可以一次处理8个字节的数据.
参考资料:百度百科-字节
)
大多数的现代(计算机)系统使用ASCII标准(American Standard Code for Information Interchange,ASCII,美国信息交换标准代码),它是用单字节的大小整数值(unique byte-sized integer value)表示每个字符.
hello.c程序是一个字节序列(sequence of bytes)的存储文件,每一个字节里面有一个整数(integer),一个整数对应(corresponds)着一个字符.例如,第一个字节里面有一个整数35,对应的字符是’#’,第二个字节的整数内容是105,对应的字符就是’i’,以此类推(and so on),注意,每一个文本行以看不见的(invisible)换行符(newline character)’/n’结束(terminated),它对应的整数内容是10.
像hello.c这样只(exclusively专门)由ASCII字符构成的文件称为(know as)文本文件.其他所有文件都称为二进制(ninary)文件。
hello.c的表示(representation)说明(illustrates)了一个基本概念(fundamental idea):所有的系统信息-包含磁盘文件,内存(stored in memory)中的程序,内存中的用户数据和通过互联网传输的数据-表示为(represented)一串(as a bunch)字节(bits). 区分(distinguishes )这些不同数据对象的唯一办法就是观察他们的内容.例如,不同的内容,相同的字节序列(sequence of bytes)可能(might)代表一个整数、浮点数、字符串或者机器指令(machine instruction).
作为一个编程者,我们需要明白,机器数字的表示形式(machinerepresentation of number),因为它们和整数和实数(real numbers)不同.整数和实数是一种表示不精确的表现(behave)是一个有限的(finite)近似值(approximation ).这个基本概念在第2章中进行探讨(explored).
图1.2 hello.cASCII文本表示: