整型常量的不同进制表示
计算机中只能存储二进制数,即0和1,(而在对应的物理硬件上则是高、低电平。为了更方便地观察内存中的二进制数情况,==除我们正常使用的十进制数外,计算机还提供了十六进制数和八进制数==。
下面介绍不同进制数的对应关系。
首先,在计算机中,==1字节为8位,1位即二进制的1位,它存储0或1==。int 型常量的大小为4字节,即32位。
设有二进制数0100 1100 0011 0001 0101 0110 1111 1110,其最低位是2的零次方,代表数值的最高位是2的30次方,最高位为符号位,符号位为1时是补码,将在高级阶段的补码部分讲解。
上面的二进制数对应的八进制数是011414253376,它以0开头标示,数位的变化范围是0~7。二进数转换为八进制数的方式是,对应的二进制数每3位转换为1位八进制数。首先将上面的二进制数按每3位隔开,得到01 001 100 001 100010 101011 011 111110,然后每3位对应0~7范围内的数进行对应转换,得到八进制数011414253376。由于实际编程时,识别八进制数时前面需要加0,所以在前面加了一个0。
上面的二进制数对应的十六进制数是Ox4C3156FE,它以0x开头标示,数位的变化范围是0~9和A~F,其中A代表10,F代表15,对应的二进制数每4位转换为1位十六进制数。==十六进制在观察内存时需要频繁使用==。
上面的二进制数对应的十进制数是1278301950,具体计算需要以2的幂次相加依次来计算,是2^1^+2^2^+2^3^+....2^30^来实现(为1的位置就需要2的幂次,为零不需要),最好通过计算器来进行.
目前我们执行到语句 int i=123,变量i会在内存上被分配空间,大小为4字节,会看到如下图所示,其中i的值变为7b(我们以十六进制方式查看内存),其十进制值为7×16+11=123,i的值是0x0000007b.为什么显示结果为7b 00 00 00呢?原因是==英特尔的CPU采用了小端方式进行数据存储,因此低位在前、高位在后==.