PHP INT类型在内存中占字节详解

本教程将介绍输出INT类型在内存中占多少个字节

新建一个333.php,如图所示:

添加php的界定符(<?php?>),如图所示:

声明PHP与浏览器交互的文件类型和编码,如图所示:

使用常量 PHP_INT_SIZE 来获取INT类型在内存中占多少个字节,如图所示:

使用 echo 语句输出常量 PHP_INT_SIZE 获取到的字节数,如图所示:

运行网页,在浏览器上显示获取到的结果,如图所示:

section id="smaller-text-left-7">至此,本教程结束!

至此,本教程结束!

内容扩展

php中int类型在不同平台所占不同字节数理解

1.在不同平台上占字节数与最大值

  • 在32位平台上int占4个字节,在64位平台上int占8个字节,PHP_INT_SIZE
  • 在32位平台上int的最大值2^31 - 1,在64位平台上int最大值2^63 - 1,PHP_INT_MAX。php中int不支持无符号

2.为什么在不同的平台上int类型所占字节数有差异呢

不管什么类型,编译型语言都会把源码编译成机器码,由于不同平台寄存器位宽不一样, 所以有了自己对int的规定, 导致int 这个数据类型比较特殊,具体分配的字节数与机器字长和编译器有关。但一般等于机器寄存器位宽(64位平台除外,默认为4字节),如在32位平台上(所谓32位平台是指通用寄存器的数据宽度是32)编写代码,int 类型分配4个字节,而在16位平台是则分配2个字节。编译器是把代码转换为机器码的软件,如果他愿意,可以把int转换为256位的,只不过会增加机器的复杂度,降低可移植性。

3.平台

个人把这三者合起来考虑(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)发挥的能量最大。另外一个话题,如果只是从抽象的层面来看,每个程序有的只是虚拟的计算环境,可以不必考虑实际的环境,只需要了解虚拟环境的情况就可以了,这在不考虑移植性或者非底层编程的时候是很有帮助的,这样可以使你关注你的逻辑而不是实现

(0)

相关推荐

  • PHP INT类型在内存中占字节详解

    本教程将介绍输出INT类型在内存中占多少个字节 新建一个333.php,如图所示: 添加php的界定符(<?php?>),如图所示: 声明PHP与浏览器交互的文件类型和编码,如图所示: 使用常量 PHP_INT_SIZE 来获取INT类型在内存中占多少个字节,如图所示: 使用 echo 语句输出常量 PHP_INT_SIZE 获取到的字节数,如图所示: 运行网页,在浏览器上显示获取到的结果,如图所示: section id="smaller-text-left-7">

  • C++中整形与浮点型如何在内存中的存储详解

    目录 1 数据类型 1.1 类型的基本归类 2 整形在内存中的存储 2.1 二进制的三种形式 2.2 大小端字的介绍 3 浮点数在内存中的存储 3.1 浮点数存储规则 1 数据类型 前面我们已经知道了基本的内置类型: 类型的意义: 1. 使用这个类型开辟内存空间的大小(大小决定了使用范围). 2. 如何看待内存空间的视角. 1.1 类型的基本归类 整形家族: char unsigned char signed char short unsigned short [int] signed shor

  • C语言编程数据在内存中的存储详解

    目录 变量在计算机中有三种表示方式,原码反码,补码 原码 反码 补码 总结一下 浮点数在内存的储存 C语言中,有几种基本内置类型. int unsigned int signed int char unsigned char signed char long unsigned long signed long float double 在内存中创建变量,会在内存中开辟空间,并为其赋值. int a=10; 在计算机中,所有数据都是以二进制的形式存储在内存中. 变量在计算机中有三种表示方式,原码反

  • C++浮点数在内存中的存储详解

    目录 前言: 浮点数的表示形式 浮点数存储模型 有效数字M 指数E 例题讲解 总结 前言: 我们在码代码的时候,经常遇到过以整数形式存入,浮点数形式输出:或者浮点数形式存入整数形式输出.输出的结果往往让人意想不到,那么,为什么会发生这样的变化,又是什么导致发生变化,接下来,就让我们从存储内部结构出发,带你深度解刨! 我们以一个例子来说明一切 #include<stdio.h> int main() { int n = 9; float *pFloat = (float *)&n; pr

  • 关于C语言中数据在内存中的存储详解

    前言 1. 数据类型详细介绍 2. 整形在内存中的存储:原码.反码.补码 3. 大小端字节序介绍及判断 4. 浮点型在内存中的存储解析 一.数据类型介绍 1.类型的基本归类 1.整形家族 char unsigned char signed char short unsigned short [int] signed short [int] int unsigned int signed int long unsigned long [int] signed long [int] 2.浮点型家族

  • C语言数据在内存中的存储详解

    目录 文章摘要 一.C语言的数据类型 数据类型基本分为: 二.隐式类型转换 1.什么是隐式类型转换 2.整型提升 3.类型转换 三.机器大小端 1.什么是大小端 2.大小端在截断的应用 3.判断当前机器的字节序是大端还是小端 四.整型在内存中的存储 1.原码.反码.补码 2.举例实践整型数据在内存的存储 总结 文章摘要 本文通过内存底层原理,帮你透彻了解数据存储进内存与从内存中读取的区别以及不同数据类型下数据计算.赋值的变化情况 要透彻理解这些,必须知道隐式类型转换以及机器大小端的概念,本文会对

  • Map与WeakMap类型在JavaScript中的使用详解

    map类型特点与创建方法: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scal

  • C语言详解float类型在内存中的存储方式

    目录 1.例子 2.浮点数存储规则 1.例子 int main() { int n = 9; float *pFloat = (float *)&n; printf("n的值为:%d\n",n); printf("*pFloat的值为:%f\n",*pFloat); *pFloat = 9.0; printf("num的值为:%d\n",n); printf("*pFloat的值为:%f\n",*pFloat); re

  • 从汇编看c++中的多态详解

    在c++中,当一个类含有虚函数的时候,类就具有了多态性.构造函数的一项重要功能就是初始化vptr指针,这是保证多态性的关键步骤. 构造函数初始化vptr指针 下面是c++源码: class X { private: int i; public: X(int ii) { i = ii; } virtual void set(int ii) {//虚函数 i = ii; } }; int main() { X x(1); } 下面是对应的main函数汇编码: _main PROC ; 16 : in

  • C/C++ 中memset() 函数详解及其作用介绍

    memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的: 包含在<string.h>头文件中,可以用它对一片内存空间逐字节进行初始化: 原型为 : void *memset(void *s, int v, size_t n); 这里s可以是数组名,也可以是指向某一内在空间的指针: v为要填充的值: n为要填充的字节数: 例子: struct data { char num[100]; char name[100]; int n; }; struct data a, b[10]; me

随机推荐