32位和64位下数据大小
来源:互联网 发布:加勒比海盗壁纸软件 编辑:程序博客网 时间:2024/06/06 01:37
32位和64位下数据大小
#include <stdio.h>
int main ()
{
printf ("char /n", sizeof(char));
printf ("short /n", sizeof(short));
printf ("int /n", sizeof(int));
printf ("long /n", sizeof(long));
printf ("long long/n", sizeof(long long));
printf ("float /n", sizeof(float));
printf ("double /n", sizeof(double));
printf ("long double /n", sizeof(long double));
printf ("pointer /n", sizeof(void*));
return 0;
}
WinXP 32 x64
char 1 1
short 2 2
int 4 4
long 4 4
long long 8 8
float 4 4
double 8 8
long double 8 8
pointer 4 8
Linux x86 amd64
char 1 1
short 2 2
int 4 4
long 4 8
long long 8 8
float 4 4
double 8 8
long double 12 16
pointer 4 8
Little-endian 是将低位字节存储在内存的低地址中,将高位字节存储在内存的高地址中。
Big-endian 是将高位字节存储在内存的低地址中,将低位字节存储在内存的高地址中。
表 3. 64 位 long int 类型的布局
低地址
高地址
Little endian
Byte 0
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Byte 7
Big endian
Byte 7
Byte 6
Byte 5
Byte 4
Byte 3
Byte 2
Byte 1
Byte 0
例如,32 位的字 0x12345678 在 big endian 机器上的布局如下:
表 4. 0x12345678 在 big-endian 系统上的布局
内存偏移量
0
1
2
3
内存内容
0x12
0x34
0x56
0x78
如果将 0x12345678 当作两个半字来看待,分别是 0x1234 和 0x5678,那么就会看到在 big endian 机器上是下面的情况:
表 5. 0x12345678 在 big-endian 系统上当作两个半字来看待的情况
内存偏移量
0
2
内存内容
0x1234
0x5678
然而,在 little endian 机器上,字 0x12345678 的布局如下所示:
表 6. 0x12345678 在 little-endian 系统上的布局
内存偏移量
0
1
2
3
内存内容
0x78
0x56
0x34
0x12
类似地,两个半字 0x1234 和 0x5678 如下所示:
表 7. 0x12345678 在 little-endian 系统上作为两个半字看到的情况(对此表示怀疑,要实验一下)
内存偏移量
0
2
内存内容
0x3412
0x7856
从 32 位迁移到 64 位时,增长的主要类型是指针和派生数据类型,如句柄。在 Windows 64 位中,目前的指针和派生类型是 64位 long 类型。大小增加的其他一些类型还有:WPARAM、LPARAM、LRESULT 和 SIZE_T。其中一个原因是,它们作为参数使用,并且某些函数将指针作为参数使用。
从“int”和“long”派生出的所有类型的大小仍然是 32 位,其中包括 DWORD、UINT 和 ULONG。小于 32 位的类型保留它们当前的大小。一个示例就是“short”数据类型,它仍然保留为 16 位的带符号整数。
注意这里已经明显指出了句柄的大小是64位
看来 开始进行 64 位 Windows 系统编程之前需要了解的所有信息 所描述的句柄仍然是32位的说法是完全错误的.
- 32位和64位下数据大小
- 32位和64位下数据大小
- 32位机与64位机数据大小
- 32位和64位系统内置数据变量的大小区别
- 32位,64位操作系统下基本数据类型字节大小
- 32位 64位操作系统下基本数据类型字节大小
- 32位 64位操作系统下基本数据类型字节大小
- 32位 64位操作系统下基本数据类型字节大小
- 32位,64位操作系统下基本数据类型字节大小
- 32位和64位平台锁大小比较
- 关于32位和64位的类型大小
- 32位操作系统和64位操作系统的数据类型大小
- 64位和32位各个数据类型大小
- 16位,32位,64位下各种数据类型的长度大小
- LINUX 64位下运行32位程序加载和读取大数据段共享内存
- 32位和64位系统区别和数据字节
- 32位和64位
- 32位和64位
- 【达达】做了密钥获取这一部分
- Anonymous Class学习 <Java in a netshell>
- Java程序员从笨鸟到菜鸟之(十二)java异常处理机制
- 老太太有一筐数土豆,她两个两个一数剩一个,三个三个一数剩两个,四个四个一数剩三个,五个五个一数剩四个,六个六个一数剩五个。请问老太太至少有多少个土豆
- C语言数组与指针详解 .
- 32位和64位下数据大小
- Android设备分辨率,密度以及dp
- NYOJ3——多边形重心问题
- 解决无法安装SQL Server 2008 Management Studio Express的问题
- hibernate 总结(1)
- Java程序员从笨鸟到菜鸟之(十三)java网络通信编程
- mac系统eclipse安装svn插件
- 数组与指针---都是"退化"惹的祸
- 杭电1312,搜索题