zoukankan      html  css  js  c++  java
  • 32位与64位之谈

    在我们购买电脑时总会涉及到32位与64位这个词;在安装软件时仍然会听到这个词,而作为程序员更多能接触到这个词,经常有一些问题是在问对于一个32位系统或者64位系统,类型占的字节或者位空间,这个问题可以在不同位数的编辑器进行编码,然后能够输出不同类型变量具体占的位数,接下来我来先分享一下:

    1、对于32和64的区别;

    2、然后说一下不同变量在不同的操作系统位数下具体占的空间;

    3、以及如何编码来确定在编译器确定位数

    一、32位和64位的区别

    首先32位和64位指的是:
    CPU的位和字长
    其中字长:电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。
    64位处理器包括AMD Athlon 64与INTEL的EMT64处理器都是指通用寄存器的位宽,不是总线。

    (一)、在内存与CPU上的区别
    首先,相信选择64位Windows 7的网友中很有大比例是内存大于或等于4GB的。在32位Windows 7下,可能会显示内存可使用3.25G,这让很多网友感到不安。没错,可寻址的内存空间确实是32位Windows 7和64位Windows 7最为显著的特点。
    32位的CPU(准确的说是运行在32位模式下的CPU)只能寻址最大4GB的内存,受制于此,32位的操作系统也只能识别最大4GB的内存,由于在系统中,除了内存之外,还有很多存储设备,因此,真正可以利用的内存空间肯定小于4GB,也就是我们看到的系统属性中显示的3.xxG。
    但64位CPU则有了很大改变,64位CPU的最大寻址空间为2的64次方bytes,计算后其可寻址空间达到了惊人的16TB(treabytes),即16384GB。当然,这只是理论,从实际应用上,Windows 7 64bit的各版本分别为8GB-192GB,其中,家庭普通版能支持8GB内存,家庭高级版能支持16GB内存,而64位的Windows 7专业版、企业版和旗舰版最高可支持192GB内存。
    也就是说,内存大于等于4GB的用户,由于受到32位硬件限制,因此,不能最大化的利用硬件资源,这就很有必要安装64位操作系统以最大化利用资源。
    需要注意的是,64位系统需要64位CPU的支持,在安装64位Windows 7前请先确认你的CPU是否支持64位,一般而言,2006年之后购买的CPU均支持64位模式。
    如果仅考虑这点,对于内存小于4GB的用户,32位Windows 7更适合大家使用,因为64位版本会占用更多的系统内存资源,起的作用适得其反了。
    (二)、运算性能,这也是很多网友非常关注的。
    理论上,64位平台上的运行性能要远超过32位平台。原因在与CPU通用寄存器的数据位宽,64位平台是64位,而32位平台是32位,也就是说,64位平台可以运行64位数据指令,处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据),比32位(需要四个指令,一次提取4个字节的数据)提高了一倍,理论上性能会相应提升1倍。
    相信看到这里,又会有很多用户动摇了,甚至有很多内存不足4GB的网友们想要体验下64位Windows 7的威力,但仍然有个问题。
    (三)、这就是应用软件的问题。
    在64位Windows 7下运行32位的应用软件并不会让你感觉到性能的飞跃,只有64位的应用软件才能最大化发挥64位平台的优势。但显而易见,目前64位的应用程序在种类的数量上都要远低于32位平台,不过值得高兴的是,越来越多的软件开发者开始将他们的软件移植到64位平台上。
    至少在当前,仍然有很多软件不兼容Windows 7 64位版本,这一切需要时间来解决。
    二、不同变量在不同的操作系统位数下具体占的空间

    此处要注意字节(byte)还是位数(bit) 1byte = 8bit

    Win64, 也就是X64编译配置下:

    char:1字节;

    short:2字节;

    int:4字节;

    long:4字节;

    long long:8字节;

    float:4字节;

    double:8字节;

    long double:8字节;

    wchar_t:2字节;

    bool:1字节;

     

    char*:8字节;

    bool*:8字节;

    short*:8字节;

    int*:8字节;

    long*:8字节;

    long long*:8字节;

    float*:8字节;

    double*:8字节;

    long double*:8字节;

    wchar_t*:8字节;

    下面是Win32, 也就是X86编译配置下变量所占字节数:

     

    char:1字节;

    short:2字节;

    int:4字节;

    long:4字节;

    longlong:8字节;

    float:4字节;

    double:8字节;

    long double:8字节;

    wchar_t:2字节;

    bool:1字节;

     

    char*:4字节;

    bool*:4字节;

    short*:4字节;

    int*:4字节;

    long*:4字节;

    long long*:4字节;

    float*:4字节;

    double*:4字节;

    long double*:4字节;

  • 相关阅读:
    JSP(7)—EL和JSTL
    JSP(6)—JavaBean及案例
    JSP(5)—Session的创建以及简单使用
    JSP(4)—Cookie创建及简单案例(自动登录)
    JSP(3)—Cookie和Session
    JSP(2)—绝对路径与相对路径、配置Servlet与Servlet注解
    JSP(1)—基础知识
    Dockerfile RUN mkdir xxx 的时候报了Permission denied
    摘抄:Solr和ElasticSearch的区别
    POST请求反向代理设置
  • 原文地址:https://www.cnblogs.com/xxyue/p/9334032.html
Copyright © 2011-2022 走看看