第二章 信息的表示和处理



2.1 信息存储

  最小的可寻址内存单位,是字节,而不是第一章提到的位。虚拟内存被视为一个非常大的字节数组,内存的每个字节都有一个唯一的数字来标识,称它为地址,所有可能地址的集合则称为虚拟地址空间。

2.1.1 十六进制表示法

十六进制转二进制:

二进制转十六进制:(最左边一组少于4位,补0)

十进制转十六进制:

十六进制转十进制:

 

2.1.2 字数据大小

 每台计算机都有一个字长,指明指针数据的标称大小。字长还会决定一个极为重要的系统参数——虚拟地址空间。比如现在有一个 32 位机,每一位可以取值 1 或 总共 32 位,能组合的出局就有 232 个,所以它能访问 232 个地址。32位字长限制虚拟地址空间为4千兆字节,写作4GB。因此你如果给 32 位机装上 8G 的内存条,是起不了多大作用的。

2.1.3 寻址和字节顺序

小端法:最低有效字节在前面

大端法:最高有效字节在前面

2.1.4 表示字符串

  C语言中字符串被编码为一个以null(其值为0)字符结尾的字符数组。

2.1.5 表示代码

  当程序代码在机器上编译时,会生成一些字节来表示机器代码。

2.1.6 布尔代数简介

2.1.7 C语言中的位级运算

  确定一个位级表达式的结果最好的方法,就是将十六进制的参数扩展成二进制并执行二进制运算,然后再转回十六进制。

2.1.8 C语言中的逻辑运算

 逻辑运算返回的时0或1,它们表示true或者false。如 0x69&&0x55,结果为0x01,即true。

2.1.9 C语言中的移位运算

左移:如01100011,丢弃前4位0110,后4位0011左移4位,然后右端补4个0,得到00110000。

逻辑右移:丢弃后4位0011,前4位0110右移4位,然后左端补4个0,得到00000110。

算术右移:丢弃后4位0011,前4位0110右移4位,然后左端补4个0(因为最高位为0,故补0),得到00000110。

 Java中,x>>k是算术右移。x>>>k是逻辑右移。

posted @ 2018-10-21 14:35  凌晨六点半  阅读(163)  评论(0编辑  收藏  举报