说起来这个话题,如果我把标题改成“你是怎么判断系统是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位相关推荐

  1. VC程序里判断系统是64位还是32位的正确方法

    VC程序里判断系统是64位还是32位的正确方法 BOOL IsWow64()  {      typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, P ...

  2. 【分享】如何判断个人电脑是多少位(32位?还是64位系统)

    如何判断个人电脑是多少位(32位?还是64位系统) 在开始>运行中输入"cmd",然后在命令提示符窗口中输入"systeminfo",如果系统是64位的, ...

  3. C++判断系统位数(64位或32位)

    C++判断系统位数[64位或32位] 实现方法 原理 函数 实例 总结 实现方法 本文主要介绍1种兼容性强&简单的判断方法,希望对你有帮助; 原理 64位系统会在c:\Windows创建Sys ...

  4. 计算机二级安装64位的还是,判断电脑适合装64位还是32位系统需要cpu支持,很多人都搞错了!...

    昨天把系统又重装了一下,猛然发现,我的电脑可以装64位操作系统,而我一直用的是32位操作系统,因为几年前,64位操作系统缺乏驱动,市面上的软件在32位(X86)操作系统兼容性好,而这几年,硬件配置的提 ...

  5. c语言程序判断32位还是64位,c++ 判断是64位还是32位系统的实例

    1.IsWow64Process 确定指定进程是否运行在64位操作系统的32环境(Wow64)下. 语法 BOOL WINAPI IsWow64Process( __in HANDLE hProces ...

  6. 判断当前Windows XP操作系统是32位还是64位的方法

    昨天在调查怎样区分Windows XP32位和64位的问题,在网上找了一下,大家常用的有两种方法. 方法一.通过指针来判断. 在32位操作系统上指针长是4个字节,而在64位系统上指针为8个字节. 方法 ...

  7. 选32位 64位 oracle,32位PLSQL配置为64位的Oracle和64位系统

    问题描述: 配置:64位系统64位Oracle32位PLSQL 安装好Oracle之后,用PLSQL连接数据库,却总是不显示PLSQL的登录窗口,不能正常连接到数据库,没有数据库的初始化内容. 解决方 ...

  8. 64 win10位系统上编译出的32位的可执行程序到其他机器上无法运行_MoreThanJava计算机系统概述...

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  9. 服务器64位还是32位系统好,云服务器64位还是32位

    云服务器64位还是32位 内容精选 换一换 Windows操作系统与Linux操作系统没有好坏之分,只有适合不适合.请根据业务需求选择Windows或Linux的操作系统.华为云提供了5个版本,且每个 ...

  10. 计算机怎么升级64位操作系统,如何将计算机的32位更改为64位

    64位技术相对于32位,此位是指CPUGPR(通用寄存器,通用寄存器)的数据宽度为64位,64位指令集是运行64位的指令数据,这也意味着处理器可以一次运行64位数据. 64位处理器不仅现在可用. 在高 ...

最新文章

  1. 【VMCloud云平台】SCO(一)规划
  2. 1.虚拟化的历史和定义
  3. chrome 播放视频提示 adobe flash player已过期或者adobe flash player 没有安装
  4. pytorch的多分类问题
  5. Nginx实现高可用的工作原理
  6. 剑指offer(17)树的子结构
  7. 如何开发一个扫雷小游戏?
  8. 4岁的拼多多超越20岁的百度,成为中国第五大互联网公司!
  9. TreeSet(不可重复,自动排序)实现自定义排序
  10. 计算机键盘训练软件,键盘打字练习软件(TypingMaster)
  11. 成都信息工程大学 809 软件工程导论简答题必背
  12. 简仿Path的商店表情弹出模块
  13. PID算法与PID自整定算法
  14. Photoshop脚本 合并链接图层
  15. 华为路由器hilink怎么用_华为HiLink是什么?华为hilink智能联网怎么用
  16. Unable to read entire header; 80 bytes read; expected 512 bytes
  17. 第三方支付网关的选择
  18. AVI音视频封装格式学习(三)——AVI 数据结构解析
  19. 姓张信息mysql_MySQL_数据查询
  20. 基于SPI的OLED显示

热门文章

  1. C语言实现扫描文件下所有目录
  2. 让我们的爱洒满孩子们的心
  3. 制作系统光盘Server 2003 总结
  4. Crossbar率先发难—欲彻底埋葬英特尔的3D XPoint技术
  5. 几分之几在手机计算机上是哪个符号,数学各 种符号怎么表达比如根号,几分之几 – 手机爱问...
  6. 轮播图特效 html+css+js
  7. kafka 报错: IllegalArgumentException: Error creating broker listeners from ‘PLAINTEXT:xxx.xxx.xxx.xx
  8. 送给女朋友的java程序_逗女朋友开心的玫瑰花Java web程序
  9. 用as写2048游戏
  10. 好佳居窗帘十大品牌 窗帘需要装窗幔吗