写一段程序,判断一个操作系统是16位还是32位?
2017-07-28 10:58
134 查看
法一:利用sizeof
可以使用sizeof计算int的字节长度来判断是32位还是16位。
32位机器下:sizeof(int) = 4;16位机器下:sizeof(int) = 2
但是实际中可能64位的机器sizeof(int)也是4字节,因为很多时候是编译器决定要占用几个字节
法二:利用最大值
1. 机器位数不同则表示的数字的最大值是不同的。
32位机器下int的最大值为2147483647,16位机器下int的最大值是32767
2. 我们可以利用最大值是否溢出情况来判断
定义一个变量num赋值32768,如果是16位机器这个时候超过了int最大值变成了-32768,如果是32位机器不会超过
[cpp] view
plain copy
int main(){
//判断机器是16位还是32位
int num = 32768;
if(num > 32767){
printf("32位机器\n");
}
else{
printf("16位机器\n");
}
return 0;
}
法三:对0取反
1. 32位机器下无符号整型的数值范围是[0,4294967295],16位机器下无符号整型的范围是[0,65535]
2. 0的二进制是所有位都是0
32位下对0取反的结果是所有位都是1,如果把这个数赋值给一个无符号整型变量num,则num值为4294967295
16位下对0取反的结果是所有位都是1,如果把这个数赋值给一个无符号整型变量num,则num值为65535
3. 利用对0取反后的结果赋值给无符号整型变量来判断值是否大于65535即可
[cpp] view
plain copy
int main(){
unsigned int num = ~0;
if(num > 65535){
printf("32位机器");
}
else{
printf("16位机器");
}
return 0;
}
可以使用sizeof计算int的字节长度来判断是32位还是16位。
32位机器下:sizeof(int) = 4;16位机器下:sizeof(int) = 2
但是实际中可能64位的机器sizeof(int)也是4字节,因为很多时候是编译器决定要占用几个字节
法二:利用最大值
1. 机器位数不同则表示的数字的最大值是不同的。
32位机器下int的最大值为2147483647,16位机器下int的最大值是32767
2. 我们可以利用最大值是否溢出情况来判断
定义一个变量num赋值32768,如果是16位机器这个时候超过了int最大值变成了-32768,如果是32位机器不会超过
[cpp] view
plain copy
int main(){
//判断机器是16位还是32位
int num = 32768;
if(num > 32767){
printf("32位机器\n");
}
else{
printf("16位机器\n");
}
return 0;
}
法三:对0取反
1. 32位机器下无符号整型的数值范围是[0,4294967295],16位机器下无符号整型的范围是[0,65535]
2. 0的二进制是所有位都是0
32位下对0取反的结果是所有位都是1,如果把这个数赋值给一个无符号整型变量num,则num值为4294967295
16位下对0取反的结果是所有位都是1,如果把这个数赋值给一个无符号整型变量num,则num值为65535
3. 利用对0取反后的结果赋值给无符号整型变量来判断值是否大于65535即可
[cpp] view
plain copy
int main(){
unsigned int num = ~0;
if(num > 65535){
printf("32位机器");
}
else{
printf("16位机器");
}
return 0;
}
相关文章推荐
- 用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数?(不用sizeof()函数求当前主机上的一个int占用几个字节)
- 用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()
- 如何判断一个操作系统是16位还是32位的?不能用sizeof()函数
- 用程序判断操作系统是16位还是32位(或64位)的?
- 判断操作系统是16位还是32位的
- 判断操作系统是16位还是32位
- 判断操作系统是16位还是32位
- C++判断操作系统是16位还是32位
- 怎样判断一个exe可执行程序(dll文件)是32位的还是64位的?
- Windows下程序判断操作系统是32位还是64位
- 怎样判断一个exe可执行程序是32位的还是64位的
- 判断一个程序是32位还是64位
- 判断操作系统是16位还是32位的
- [原创]C++判断操作系统是16位还是32位
- 一道挺不错的面试题,判断16位还是32位操作系统
- 如何判断系统是16位的还是32位的
- 【Windows编程】如何判断操作系统是64位还是32位
- C#如何判断操作系统位数是32位还是64位
- 如何判断一段程序是由C编译程序还是由C++编译程序编译的
- 搜索一个问题 C、C++判断操作系统 是 Linux还是windows 还是Unix【编译器内置宏 探索(不是特别满意)】