深入理解计算机系统第2章笔记
1 minute read
信息的表示和处理
1.不同数据类型在不同位数的操作系统下的内存长度
2.大端和小端
大端(big endian)以高位数值存到内存地址的低位(以大数结尾)
小端(little endian)以低位数值存到内存地址的高位(以小数结尾)
网络上的字节序为大端,而计算机上的字节序一般为小端,于是在发送到网络上之前需要转换一次,否则数据发送到目的地会被对方
理解错了,什么转换方法好呢?如果转换成char类型当然好,因为char类型的数据只占一个字节,没有大端和小端的区别,eg:
将int(127)发到网络上去,127需要(2**xx7=128)7bits也即1B的数据量传输,转成char类型为”127”需要(1,2,7分别作为char)需要
3B的传输量,这样的话需要传输3倍的数据量,效率太低了,于是不用这种方法,采用base64将本地数据编码后传输到网络上去
3.数据的表现形式有两种:无符号
类型和补码
类型,负数用补码表示,可由对应正数取反加1得到,eg:-4的表示形式
4的二进制表示形式是0100,取反加1为:1011+1=1100
4.负数的计算为:-1x最高位(1)x2x2..2[位数-1]+除最高位以外的其他位的正数值
\[B2T(X) = -x_{w-1} \cdot 2^{w-1} + \sum_{i=0}^{w-2} x_i \cdot 2^i\]eg,1100这个负数的值计算方法为:-1x1x2x2x2+1x2x2+0x2+0=-8+4=-4
5.如果一个表达式中包含有符号数和无符号数则会默认将有符号数转换成无符号数