判断你的CPU是32位的还是64位
来源:互联网 发布:淘宝权女友辣椒 编辑:程序博客网 时间:2024/04/29 07:50
1,写一个C++程序,判断你的CPU是32位的还是64位的。
2,定义一个长整型常量(const),要求其所有的位都设置为1. 且在32位操作系统和64位操作系统上均有效果。
3,下列程序的在32位CPU和64位CPU上输出分别是什么?
Struct Data{
char i;
long j;
int k;
};
cout << sizeof(Data) << endl;
关于平滑迁移的一些资料在博客另外一篇文章《将Linux应用程序移植到64位系统》已经讲清了。这里只给出解答。
1,判断下指针长度就可以了,32位系统指针是4个字节的(32位),64位系统指针是8字节64bit的。
#define IS_64BIT_OS (sizeof(void *) == 8)
2.在64位操作系统中,C++的long是64位的,int是32位的。在32位操作系统中,long和int都是32位的。因此用
const long M = 0xFFFFFFFF;是不行的,正确的写法如下:
const unsigned long M = -1L;
由于负数在系统中是补码存放的,所以在32位和64位系统中所有的比特都会为1
3,第三题其实牵涉到个内存对齐的问题,这里在文章中有详细说到
在32位系统中,输出是12
64位系统中,输出是24
这里还有个很有意思的问题:
Struct Data1
{
char i;
short j;
int k;
};
struct Data2
{
char i;
int k;
short j;
};
请问sizeof(Data1) == sizeof(Data2)吗?
答案是不相等的,因为对于Data2,char占用1个字节,它需要对32位对齐,因此系统会从i字段后面填充3个字节。因此是 4 4 4 ,就是12个字节。
对于Data1,char占用1个字节,short占用两个字节。因此系统会将j填充到i后面,之后再把k加上。于是占用 4 4 ,也就是8个字节。
VC6.0环境下尝试过。
- 判断你的CPU是32位的还是64位
- Android 如何判断CPU是32位还是64位
- Android 如何判断CPU是32位还是64位
- Android 如何判断CPU是32位还是64位
- Android 如何判断CPU是32位还是64位
- Android 如何判断CPU是32位还是64位
- Weblogic 是64位还是32位的判断方法
- 区分你的oracle是64位还是32位
- Linux判断CPU是32位还是64位,判断系统是32位还是64位
- Linux判断CPU是32位还是64位,判断系统是32位还是64位
- 判断操作系统是16位还是32位的
- 判断操作系统是16位还是32位的
- 用程序判断操作系统是16位还是32位(或64位)的?
- 如何查看自己的机器是的cpu与操作系统是64位还是32位的
- 查看自己的cpu,system是32位还是64位的
- 浏览器的判断和Window系统是64位还是32位的判断
- 在Windows下测试CPU是32位还是64位的C代码
- 判断SQL 2005的版本、判断系统是32位还是64位
- c++面试题
- 在C++中集成Lua脚本
- oracle PROFILE的管理
- larbin解读(2) --配置
- 来11:1 信就是所望之事的实底,是未见之事的确据。
- 判断你的CPU是32位的还是64位
- MFC的消息机制
- 安装 Windows 64 位版本的调试工具
- Silverlight入门学习
- 在C++中集成Lua脚本
- jboss4.2.2GA:ERROR [URLDeploymentScanner] Incomplete Deployment listing
- SVN标志
- ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined. 错误解决方法
- JQ图标插件之JQCharts