`

32位和64位系统区别及int字节数

    博客分类:
  • c++
 
阅读更多

一)64位系统和32位有什么区别? 

1、64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存

2、64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。

 

什么是64位处理器?

之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数。8位处理器、16位处理器、32位处理器和64位处理器,其计数都是2的倍数。一次处理的数据越大,该电脑处理信息的能力越来越大;因此64位处理在先天就比32位处理器具有快速的能力。那为什么不用更高级的128位处理器呢?因为位数越高,处理器芯片的设计也就越复杂,目前的技术水平暂时无法制造这么复杂的芯片。

 

64位处理器之失

※硬件———缺乏驱动程序,很多现有硬件无法使用

※软件———操作系统不是问题,但是软件出现不兼容难题

 

64位处理器之得

※硬件———更快的执行速度,更大的内存管理

※软件———最新的尖端软件首先出现在64位平台

 

(二)数据类型对应字节数

程序运行平台
      不同的平台上对不同数据类型分配的字节数是不同的。
      个人对平台的理解是CPU+OS+Compiler,是因为: 
      1、64位机器也可以装32位系统(x64装XP); 
      2、32位机器上可以有16/32位的编译器(XP上有tc是16位的,其他常见的是32位的); 
      3、即使是32位的编译器也可以弄出64位的integer来(int64)。 
      以上这些是基于常见的wintel平台,加上我们可能很少机会接触的其它平台(其它的CPU和OS),所以个人认为所谓平台的概念是三者的组合。 
      虽然三者的长度可以不一样,但显然相互配合(即长度相等,32位的CPU+32位的OS+32位的Compiler)发挥的能量最大。 
      理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。

常用数据类型对应字节数
  可用如sizeof(char),sizeof(char*)等得出

 32位编译器:

      char :1个字节
      char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   4个字节
      long long:  8个字节
      unsigned long:  4个字节

  64位编译器:

      char :1个字节
      char*(即指针变量): 8个字节
      short int : 2个字节
      int:  4个字节
      unsigned int : 4个字节
      float:  4个字节
      double:   8个字节
      long:   8个字节
      long long:  8个字节
      unsigned long:  8个字节

分享到:
评论

相关推荐

    char ,int,long,float,double,等在64位和32位下分别占多少字节

    本文旨在探讨编程语言中常见的基本数据类型(`char`, `int`, `long`, `float`, `double`)在32位与64位操作系统环境下所占用的字节数量,并深入分析这些差异产生的原因及其对程序设计的影响。 #### 1. 数据类型的...

    Keil MDK-ARM各种数据类型占用的字节数 char short int float double

    在32位的ARM架构中,数据类型的字节数可能与传统的桌面系统有所不同。 1. **char**: `char`类型在Keil MDK-ARM中占用1个字节(8位)。这可以表示-128到127之间的有符号整数,或者0到255之间的无符号整数。`signed ...

    stm32 crc32校验程序 支持32位int整型字节对齐 大小端

    在程序设计中,支持32位int整型字节对齐意味着程序能够处理按4字节边界对齐的32位整数数据。在某些处理器架构中,字节对齐对于性能至关重要,因为它可以优化内存访问并减少数据处理的潜在问题。例如,如果一个32位...

    典型数据类型在32和64位系统上的位宽

    在32位系统中,`int`类型通常占用4字节(32位),而在某些64位系统中,为了兼容性考虑,`int`也可能保持4字节的大小,但在其他64位系统中,`int`可能会扩展到8字节(64位),这取决于编译器和具体的实现方式。...

    C语言常见类型占用字节数

    int类型的大小推荐为一个机器字长,这在32位系统中通常是4字节,在64位系统中是8字节。short类型的长度不能超过int的长度,而long类型的长度至少要和int一样长。因此,在32位系统中,long类型也是4字节,在64位系统...

    源码讲解int和unsigned int 的区别,每一位是干什么的

    例如,在一个32位系统上,-1 在二进制中表示为 11111111 11111111 11111111 11111111(或简写为 0xffffffff)。 - 对于 `unsigned int` 类型,所有位都用于表示数值的大小。因此,-1 被解释为 4,294,967,295,即 `...

    long和int的区别.docx

    在 64 位系统下,整型通常为 32 位,而长类型通常为 64 位。 但是,需要注意的是,编译器也会对整型和长类型的长度进行控制。例如,在 64 位系统下,编译器为了向前兼容,将整型自动编译为 4 个字节的。不同的...

    IP地址转换成Int64

    Int64,全称为64位整型,是编程语言中的一种数据类型,用于存储大整数值。在某些情况下,我们需要将IP地址转换为Int64格式,这主要出于计算或存储效率的考虑。这种转换在处理大量IP数据时特别有用,例如在网络监控、...

    【转】C语言常见类型占用字节数

    int类型通常占用的字节数取决于操作系统和编译器的位数,32位系统通常为4字节,64位系统则为8字节。long类型的长度至少等于int类型,但具体长度可以等于或大于int,32位系统下可能为4字节,64位系统下可能为8字节。 ...

    C# Byte数组转Int32 Short Float(浮点数)

    标题和描述提到的“C# Byte数组转Int32 Short Float(浮点数)”是指将字节数组中的数据转换为整型(Int32)、短整型(Short)以及浮点数(Float)的过程。以下是对这个主题的详细解释: **字节数组基础** 字节数组...

    计算一个Java对象占用字节数的方法

    在64位系统上,引用可能占用8字节。 **填充物(D)**: 为了内存对齐,Hotspot JVM会确保每个对象占用的总空间是8字节的倍数。如果对象的总大小不是8的倍数,那么就会添加填充字节以达到对齐要求。这有助于提高访问...

    TC64位操作系统

    例如,数据类型(如int)在64位系统中可能有不同的大小,这可能会影响变量存储和内存占用。此外,指针在64位系统中也需要更多的字节来表示,这可能会改变内存布局和程序的性能。 使用TC64位版本,开发者需要注意...

    C语言 32位机与64位机的字长.rar

    在编程领域,尤其是在C语言的世界里,理解不同架构(32位和64位)的计算机如何处理数据是非常重要的。本教程将深入探讨这个主题,帮助开发者更好地理解这两种体系结构的差异及其对程序设计的影响。 首先,我们来...

    字、半字、字节的定义

    在32位系统中,sizeof(int)可能返回4字节,在64位系统中也是4字节,尽管系统本身是64位的,但许多编译器设计为保持int类型大小的向后兼容性。 综上所述,字、半字和字节是计算机硬件和软件中不可或缺的基础概念,...

    64位操作系统编程规范

    5. **Void* (及其他指针)**:指针类型的长度在32位系统中为4字节,在64位系统中扩展至8字节。 6. **Time_t**:时间戳类型在两种系统上的长度都是8字节。 7. **Float**:浮点数float的长度为4字节。 8. **Double**:...

    16位转浮点型float,MODBUS 32位转浮点型float 64位转双浮点型double

    总结来说,16位、32位和64位数据转换为浮点型和双浮点型涉及对二进制、16进制和浮点数表示的理解,以及相应的编程技巧。在实际应用中,尤其是涉及MODBUS协议的场合,熟练掌握这些转换方法是必要的。对于具体实现,...

    4字节16进制数转换为float浮点数的原理及Qt算法实现示例

    浮点数的表示方式遵循IEEE 754标准,它定义了如何用二进制表示单精度(32位)和双精度(64位)浮点数。在编程中,我们有时需要将这些二进制表示转换为人类更易读的十进制格式,或者反过来,从十进制转换为二进制。...

    LongInt Float Double与字节数组的转换.rar

    在给定的压缩包文件中,重点讲述了`LongInt`、`Float`和`Double`这三种数值类型与字节数组之间的转换。这里我们将详细讨论这些转换的过程以及其在实际应用中的意义。 首先,`LongInt`是表示32位整数的数据类型,...

    TIA博途-整数拆分到字节数组中-全局FC库文件-V15版本.zip

    在PLC编程中,例如使用SCL或Ladder Diagram(梯形图),我们需要将32位的整数(例如,INT或DINT类型)转换为4个8位的字节(BYTE类型)。这种操作通常是为了适应网络协议,如TCP/IP或PROFINET,它们要求数据以字节流...

Global site tag (gtag.js) - Google Analytics