Office中国论坛/Access中国论坛

标题: 指针、字节、进制、大小端。汪老师说我会了c的50%,噢耶! [打印本页]

作者: tianping    时间: 2014-3-20 16:22
标题: 指针、字节、进制、大小端。汪老师说我会了c的50%,噢耶!
本帖最后由 tianping 于 2014-3-20 16:40 编辑

这个图,老师让我牢牢钉在脑海里,有空就过上两遍
[attach]53627[/attach]

最基本的C语法:
int i=0xFF;   //申请一个INT变量i,占4字节,存储的数据值是16进制的FF。
int * pi=&i;  // 申请一个指针变量pi,指针的值是i的首字地址。
图中i的值存在0x00bcf9a8-0x00bcf9ab这四个字节中,依次是FF,00,00,00。
pi的值存储的是i的地址:0x00bcf9a8。
下面这个图就是指针的高级用法,拿宝图寻宝,找到宝库发现放的是一张宝图,然后按图再去找,结果找到的还是一张宝图,然后再去找.......

[attach]53626[/attach]



作者: tianping    时间: 2014-3-20 16:24
本帖最后由 tianping 于 2014-3-20 16:50 编辑

关于数制:
我们常用的是十进制,个位、十位、百位、千位......
逢十进一,个位的1表示1,十位的1表示10,百位的1表示100。
那么二进制呢?比照十进制的说法,就是个位、二位、四位、八位......
逢二进一,个位的1表示1,二位的1表示2,四位的1表示4,八位的1表示8 。
三进制,类推有个位、三位、九位、二十七位......
逢三进一,个位1表示1,三位1表示3,九位1表示9,二十七位1表示27 。
。。。。。。
十六进制,就是个位、十六位、256位、65536位.....
十六进制的数字依次是:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
十六进制数字用0x开头表示,0x10就是十进制的16,0xff就是十进制的255
最常用的数制是十进制、二进制,十六进制,如下图:
[attach]53624[/attach]
32位cpu的字长是32位,最大地址值为2^32-1,能直接访问的内存空间是4G。




作者: tianping    时间: 2014-3-20 16:30
本帖最后由 tianping 于 2014-3-20 16:52 编辑

关于大小端:
名词:LITTLE-ENDIAN(小字节序、低字节序),BIG-ENDIAN(大字节序、高字节序)
看下图十六进制的0x12345678在内存中的排列位置:
[attach]53625[/attach]

最低位的数字0x78排在了内存的低地址0x00d2fcc8处,最高位的0x12排在了高地址0x00d2fccb处,低位字节排放在内存的低地址端,高位字节排放在内存的高地址端,这种字节存储顺序叫小端,小字节序。相反的就叫大端,大字节序。
PowerPC系列采用大端方式存储数据,而x86系列则采用小端方式存储数据。
一般TCP/IP协议用大端方式,因此大端也叫网络字节序。





作者: 消失的电波♂    时间: 2014-3-20 16:42
本帖最后由 消失的电波♂ 于 2014-3-20 16:47 编辑

给个赞~~~大小端字节序也害了好多人





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3