zoukankan      html  css  js  c++  java
  • 32位与64位区别

    机器为什么要分为32位和64位?操作系统为什么分为32位和64位?编程上32位和64位有什么差异?


    一、机器与操作系统32位,64位。


    •  32位和64位机器。

           32位和64位指的是机器字长:CPU同时处理的数据的最大长度。一台电脑机器是由CPU,内存,IO设备,总线组成,电脑机器是64位指各部件都支持64位。实际当中CPU,内存条,IO设备,总线都安装在电脑主板上,所以“电脑”为64位机指以上设备都支持64位。

    • 32位和64位操作系统。

           从硬件上说,64位机器的总体处理速度约为32位机器的2倍。操作系统依赖机器但又不完全依赖它。软件兼容性上,32位操作系统能轻易的做到分别运行在32位机器和64位机器上,而且运行的很流畅,只须做到寻址上利用前面的32位。但当64位操作系统运行在32位操作系统上时却无法做到运行的很流畅甚至出现卡机,死机现象。此时由于64位操作系统(软件)不支持32位寻址造成内存溢出造成系统死机,或64位操作系统转为32操作时的兼容性处理过于繁琐影响了系统运行速度。

          检测代码:

    sizeof(void*)

          32位:sizeof(void*) == 4 
          64位:sizeof(void*) == 8 


    二、编程语言上32位和64位差异。


     编程语言上的差异主要体现在基本类型的位长上。C/C++等语言仅仅定义了这些基本数据类型之间的关系,并没有严格定义它们的字长。不同操作系统平台上,根据编译器不同的实现,它们的字长如下表所示:

     

    数据类型

    LP64

    ILP64

    LLP64

    ILP32

    LP32

    char

    8

    8

    8

    8

    8

    short

    16

    16

    16

    16

    16

    _int32

    N/A

    32

    N/A

    N/A

    N/A

    int

    32

    64

    32

    32

    16

    long

    64

    64

    32

    32

    32

    long long

    N/A

    N/A

    64

    N/A

    N/A

    pointer

    64

    64

    64

    32

    32

     在这张表中,LP64,ILP64,LLP64是64位平台上的字长模型,ILP32和LP32是32位平台上的字长模型。LP64意思是long和pointer是64位,ILP64指int,long,pointer是64位,LLP指long long和pointer是32-bit的。ILP32指int,long和pointer是32位的,LP32指long和pointer是32位的。32位Windows采用的是LP32数据模型,64位Windows采用的是LLP64数据模型。Windows上的32位程序设计和64位程序设计最大的不同(也就是IP32和LLP64的不同),就在于指针的长度不同??由32位变成了64位。Win32 API在很多情况下,都需要将整数转换成指针或者相反。在 32 位的硬件上不会有问题,其中指针的大小和整数的大小是相同的,但在 64 位的硬件上却完全不一样。为此微软搞了个所谓的“多态类型”:对于特定的精度,可以使用固定精度的数据类型。不管处理器的词大小如何,它们的大小都是一致的。此外,当需要数据类型的精度随着处理器词大小变化时,可以使用指针精度数据类型。


     三、参考。

    1.http://blog.chinaunix.net/uid-25513153-id-182196.html

  • 相关阅读:
    Redis 5.0 redis-cli --cluster
    Redis使用redis-trib.rb创建带密码的集群问题总结
    Docker实战之Redis-Cluster集群
    kafka作为流式处理的上一层,为什么吞吐量那么大?
    LAMP 实现全过程及wordpress的搭建
    mysql
    Mysql读写分离方案-MySQL Proxy环境部署记录
    Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL)
    iptables
    Nginx+Keepalived高可用集群
  • 原文地址:https://www.cnblogs.com/bzsh/p/4359912.html
Copyright © 2011-2022 走看看