c++怎么判断系统是64位还是32位
说起来这个话题,如果我把标题改成“你是怎么判断系统是32位还是64位”,估计一下子会有很多技术爱好者撇撇嘴说“不就是打开我的我的电脑,找到属性,点进去看是不是32还是64吗”
所以为了让你看到我的博客,并感兴趣,我不得不提高一点点难度,如果没有鼠标,只有一个键盘,只允许你用vs,vc或者clion让你去做这件事,你会怎么做?
我先说下我第一次遇到这个问题的思路,我仍然记得,第一次遇到这个问题的时候,我想到了两个观点:
1.通过代码模拟鼠标要做的这几个步骤(打开电脑,找到属性,看系统类型是32位还是64位)
2.通过系统相关的函数调用查看
很显然,对于我来说,我果断选择了第二种方法(不是因为聪明,而是因为我知道模拟这件事对我来说很难,第二种方法至少还有很多官方文档博客可以查看)
32位,64位,什么意思?
这时候,我需要明白一件事情,32位和64位究竟是什么意思?
从程序上说 :32位与64位程序,是指经过语言编译后的可执行文件,比如 C 语言编写的程序就需要区分是32位的还是64位.
从系统和硬件上讲 :CPU一次处理数据的能力是32位还是64位,关系着系统需要安装32位还是64位的系统. 32 位和 64 位中的“位”,也叫字长,是 CPU 通用寄存器的数据宽度,是数据传递和处理的基本单位。. 字长是 CPU 的主要技术指标之一,指的是 CPU 一次能并行处理的二进制位数,字长总是8的整数倍. 32位操作系统针对的32位的CPU设计。
一句话总结就是,在工作频率相同的情况下,64位处理器的处理速度会比32位的更快。而且除了运算能力之外,64位处理器的优势还体现在系统对内存的控制上,让应用程序更少地占用内存。
代码如下:
#include <windows.h>
#include <tchar.h>
BOOL Is64bitSystem()
{SYSTEM_INFO si;GetNativeSystemInfo(&si);if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)return TRUE;elsereturn FALSE;
}
int main(void)
{if (Is64bitSystem())_tprintf(TEXT("The process is running under wow64.\n"));else_tprintf(TEXT("The process is not running under wow64.\n"));return 0;
}
函数解释:
SYSTEM_INFO
包含有关当前计算机系统的信息。这包括处理器的体系结构和类型、系统中处理器的数量、页面大小以及其他此类信息。
GetNativeSystemInfo function
将有关当前系统的信息检索到在 WOW64下运行的应用程序。如果从64位应用程序调用该函数,则它等效于 GetSystemInfo 函数。如果该函数是从运行在没有 Intel64或 x64处理器(比如 ARM64)的64位系统上的 x86或 x64应用程序调用的,那么只有在支持 x86仿真(或者在也支持 x64仿真的情况下为 x64)时,它才会返回系统为 x86的信息。
PROCESSOR_ARCHITECTURE_IA64
在 windows 中,环境变量 processor architecture 可以让你知道处理器的类型。例如,环境变量 processor architecture 的值为“x86′′ ,64位为“amd64′′或 ia64′′。
_tprintf
当您希望应用程序与 UNICODE 兼容时,可以使用它。
如果定义了 UnicODE 符号,那么“ tprintf”就变成了“ wprintf”。
否则它就会变成‘ printf’
您可以在 < tchar.h > 头文件中找到定义。
c++怎么判断系统是64位还是32位相关推荐
- VC程序里判断系统是64位还是32位的正确方法
VC程序里判断系统是64位还是32位的正确方法 BOOL IsWow64() { typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, P ...
- 【分享】如何判断个人电脑是多少位(32位?还是64位系统)
如何判断个人电脑是多少位(32位?还是64位系统) 在开始>运行中输入"cmd",然后在命令提示符窗口中输入"systeminfo",如果系统是64位的, ...
- C++判断系统位数(64位或32位)
C++判断系统位数[64位或32位] 实现方法 原理 函数 实例 总结 实现方法 本文主要介绍1种兼容性强&简单的判断方法,希望对你有帮助; 原理 64位系统会在c:\Windows创建Sys ...
- 计算机二级安装64位的还是,判断电脑适合装64位还是32位系统需要cpu支持,很多人都搞错了!...
昨天把系统又重装了一下,猛然发现,我的电脑可以装64位操作系统,而我一直用的是32位操作系统,因为几年前,64位操作系统缺乏驱动,市面上的软件在32位(X86)操作系统兼容性好,而这几年,硬件配置的提 ...
- c语言程序判断32位还是64位,c++ 判断是64位还是32位系统的实例
1.IsWow64Process 确定指定进程是否运行在64位操作系统的32环境(Wow64)下. 语法 BOOL WINAPI IsWow64Process( __in HANDLE hProces ...
- 判断当前Windows XP操作系统是32位还是64位的方法
昨天在调查怎样区分Windows XP32位和64位的问题,在网上找了一下,大家常用的有两种方法. 方法一.通过指针来判断. 在32位操作系统上指针长是4个字节,而在64位系统上指针为8个字节. 方法 ...
- 选32位 64位 oracle,32位PLSQL配置为64位的Oracle和64位系统
问题描述: 配置:64位系统64位Oracle32位PLSQL 安装好Oracle之后,用PLSQL连接数据库,却总是不显示PLSQL的登录窗口,不能正常连接到数据库,没有数据库的初始化内容. 解决方 ...
- 64 win10位系统上编译出的32位的可执行程序到其他机器上无法运行_MoreThanJava计算机系统概述...
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 服务器64位还是32位系统好,云服务器64位还是32位
云服务器64位还是32位 内容精选 换一换 Windows操作系统与Linux操作系统没有好坏之分,只有适合不适合.请根据业务需求选择Windows或Linux的操作系统.华为云提供了5个版本,且每个 ...
- 计算机怎么升级64位操作系统,如何将计算机的32位更改为64位
64位技术相对于32位,此位是指CPUGPR(通用寄存器,通用寄存器)的数据宽度为64位,64位指令集是运行64位的指令数据,这也意味着处理器可以一次运行64位数据. 64位处理器不仅现在可用. 在高 ...
最新文章
- 【VMCloud云平台】SCO(一)规划
- 1.虚拟化的历史和定义
- chrome 播放视频提示 adobe flash player已过期或者adobe flash player 没有安装
- pytorch的多分类问题
- Nginx实现高可用的工作原理
- 剑指offer(17)树的子结构
- 如何开发一个扫雷小游戏?
- 4岁的拼多多超越20岁的百度,成为中国第五大互联网公司!
- TreeSet(不可重复,自动排序)实现自定义排序
- 计算机键盘训练软件,键盘打字练习软件(TypingMaster)
- 成都信息工程大学 809 软件工程导论简答题必背
- 简仿Path的商店表情弹出模块
- PID算法与PID自整定算法
- Photoshop脚本 合并链接图层
- 华为路由器hilink怎么用_华为HiLink是什么?华为hilink智能联网怎么用
- Unable to read entire header; 80 bytes read; expected 512 bytes
- 第三方支付网关的选择
- AVI音视频封装格式学习(三)——AVI 数据结构解析
- 姓张信息mysql_MySQL_数据查询
- 基于SPI的OLED显示
热门文章
- C语言实现扫描文件下所有目录
- 让我们的爱洒满孩子们的心
- 制作系统光盘Server 2003 总结
- Crossbar率先发难—欲彻底埋葬英特尔的3D XPoint技术
- 几分之几在手机计算机上是哪个符号,数学各
种符号怎么表达比如根号,几分之几 – 手机爱问...
- 轮播图特效 html+css+js
- kafka 报错: IllegalArgumentException: Error creating broker listeners from ‘PLAINTEXT:xxx.xxx.xxx.xx
- 送给女朋友的java程序_逗女朋友开心的玫瑰花Java web程序
- 用as写2048游戏
- 好佳居窗帘十大品牌 窗帘需要装窗幔吗