整型| 学习笔记

简介: 快速学习整型。

开发者学堂课程【PHP 基础入门课程(上) :整型】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/709/detail/12590


整型

 

内容介绍

一、概念

二、示例

三、小结

 

一、概念

整型:简单一点讲数据是整数,但是根据进制方式不同,有不同的数据格式。

·十进制(最常见):

默认,逢十进一,有0-9共十个符号,在这里会发现右边的数据在变,当右边的数据变到已经支撑不下的时候,就会往左边挤,1、2、3、4、5、6、7、8、9、10、当到10的时候,需要把1往左边挤,然后右边又从0~9开始,所有的进制都是一样的,阿拉伯数字即可,如123。

·八进制:逢八进一,有0-7共八个符号,7之后就是1和0,但是它不叫十,叫做一零,起始使用0标志,如0123。

·十六进制:逢十六进一,有0-9、a-f 共16个符号,a 代表的是十,f 代表的是十五,所以它是0~15,一共16个符号,起始使用0x标志,如0x123。

·二进制(计算机使用最多,但是人使用很少):逢二进一,有0-1共两个符号,起始使用0b标志,如0b101。

 

二、示例

#整型

$int1 = 123; #默认十进制

$int2 = 0123; #八进制表示

$int3 = 0x123; #十六进制表示

$int4= 0b101;#二进制表示

虽然定义数据的时候可以使用多种进制表示,但是显示数据的时候,默认 PHP 都会转换成10进制输出#接上述代码,那为什么这么做?原因其实很简单,电脑输出给谁看?人看的懂得就是十进制,所以它都会转成十进制来做。

所以它都会转成十进制来做,那比如说来举个例子,08 integer 这是整型,接下来首先来定义组数据,定义整形数据怎么定义呢?其实很简单,就是给变量名就可以了,比如说  $int1 = 123,那么这就是一个典型的十进制的一个整形,那 八进制 $int2 =0123、十六进制 $int3= 0x123、$int4 =0b101,这个时候你就不要123了,因为123已经超出范围了,所以是101,那么也不知道它到底对不对?

单纯看这些看不出对错,那么怎么办呢?浏览器访问一下,你会发现没有语法错误,所以说明系统识别了,那系统识别了,那这些结果到底是多少呢?

输出 echo $int1, ‘ <br/>’ ,$int2, ‘ <br/>’ ,$int3, ‘ <br/>’ ,$int4,

输出完了之后来看一下,浏览器看看会给解释成什么样子,对比一下你会发现第一个123还是123,但是第二个把0123的转换成了什么?

很明显不是0123变成了83,而同样的0x的16进制的123,它变成了291,而二进制101转换成了5,说明它都转换成一个能识别的十进制了,这就是整形的一个特点,以及 php 对于整形输出的特点。

1  <?php

2

3  #整型

4

5 #定义整型数据

6 $int1 = 123;

7 $int2 =0123;

8 $int3= 0x123;

9 $int4 =0b101;

10

11  #输出

12 // echo $int1, ‘ <br/>’ ,$int2, ‘ <br/>’ ,$int3, ‘ <br/>’ ,$int4;

13

#接上述代码

echo $int1,$int2,$int3,$int4; #123,83,291,5

如果想要保持原来的进制输出,就需要使用 printf (格式,数据1,数据2...)来实现

#接上述代码

printf('%d',$int1); #十进制输出 Sint1 (d代表的是十进制)

printf('%o',$int2); #八进制输出 $int2 (o代表的是八进制)

printf('十六进制是%x,二进制是%b',$int3,$int4);系统只会去识别里面的百分号的内容,然后与后面的这个内容顺序的去替换,按顺序依次进行类推。

比如输出这样的一个值,保留原来格式输出,数值格式输出怎么办呢?

printf(‘123的十进制是%d;83的八进制是%o;291的十六进制是%x;5的二进制是%b',Sint1,$int2,Sint3,Sint4);然后后面一定要跟对应的那个数值啊,而且你要保证这个顺序能对应上,要不然它的解析肯定会有问题的,会出现意想不到的一个结果,可以去试试看,那么回到浏览器来看一下,123的实际上就是123,83对应的是十进制,83的八进制就是123, 291的十六进制对应16进制计算方法也是123,但是发现虽然说用到的是一个保留进制的输出,但是它不会在前面加什么零x,这个地方加个零b,是不是就不会加了,这是它的一个方式,它只会输出它对应的数值格式,而不会带这些所谓的一个禁止标志。

14 #保留数值格式输出

15 // printf(‘123的十进制是:%d;83的八进制是:%o;291的十六进制是:%x;5的二进制是:%b',Sint1,$int2,Sint3,Sint4);

16

17

注意:

整数最大保存空间为 PHP_INT_SIZE 的值,即8个字节(PHP7 以前是4个字节),能表示的最大值是 PHP_INT_MAX 的值,最小值是 PHP_INT_MAX+1 的负数( PHP支持正负数)

echo PHP_INT_SIZE; #4

echo PHP_INT_MAX; #9223372 36854775807,最小值是-9223372036854775808,负数的绝对值比正数的绝对值大一。

首先来查看整型大小, 输入 echo PHP_INT_SIZE,回到浏览器对应的看一看,这个最大是多少呢?

八说明有八个字节,那八个字节能表示的位数一共有多大呢? echo= PHP_INT_MAX ,此时换一种方式,它叫做什么呢?

$var = PHP_INT_MAX,然后我给大家看一下这个类型,前面讲过 $var 可以查看,浏览器刷新, int 说明它是一个整型,那整型在 php 中这个数值是有符号的,有符号是什么意思呢?就是有正负,那负值我怎么拿到呢?理论上讲其实正负是各占一半,那意味着负数是不是取个反就可以了呢?同样的电量重新赋值,把它等于加上一个一,应该说取反,确切的讲给它一个符号看行不行?

你发现负的是不是也可以?而且它同时告诉,它依然是整型,那我怎么能够让它变成不是整型呢?

再给它减去一个一,你如果要用这种方式的话,我们就给它怎么样?给它用括号包起来,说明这是一个整体,最大值还加一了,刷新变成不再是整型,变成了一个浮点型,这是后面要学的,所以说明这个已经不是它的一个最大值了,从负数的角度来说是最小值,从那个绝对值得来角度来讲,它是一个最大值。

那么此时它已经变成了一个什么?它变成了一个对应的一个负数,那是因为什么呢?

是因为这个东西加一的时候,它已经变成了浮点数了。那如果说换一种方式,把它变成减的话,这个结果是什么呢?

是不是变回整型了。所以这个地方说明一个问题,这个内容已经是最大的正数了,你要是再加一它就变成了负数,变成了浮点数,不再是整型,那么即便你再取一个反好像大小一样,但是系统已经不够支撑了,所以这样的话能够得到负数的一个最大值,而且只能用减不能先加取负,因为先加的这个过程就已经把它变成了非整型,超出整形现在也就知道了,它会被浮点型接受。

特别要注意点,-9223372036854775808相当大,这个都得有八位,再来一个八位,18位的整型得多少?

18  #查看整型大小

19 // echo PHP_INT_SIZE;

20

21 $var = PHP_INT_MAX;

22

23  #PHP 中,数值是有符导(有正负)

24  $var = -PHP_INT_MAX- 1;  #负数最大值(只能用减,不能先加取负:先加的时候已经超出整型)

25  var_dump(Svar);

 

三、小结

1、整型就是保存的是整数

2、整数的形式有多种,有不同的定义方式(根据进制有关):

·十进制:直接0-9定义,但是最前面不要去使用0,如果使用0系统就会认为这是八进制。

·八进制:前面使用0,后跟0-7。

·十六进制:前面使用0x,后跟0-9+a-f。

·二进制:前面使用0b,后跟0-1,这两个数就会进行不同的组合。

3、 PHP 不管定义时采用的是什么整型,输出都默认转换成十进制。原因就是方便文化程度不高的人去看,对应特殊复杂的进制符号看不懂,使用最多且容易看的就是十进制,所以说它是会转换成十进制,方便用户查看。

4、想要保留原来格式,或者指定格式输出整数,使用 printf()

·十进制:%d

·八进制:%0

•十六进制:%x

•二进制:%b

5 PHP 中整型是有符号类型(有正负)

•最大值: PHP_INT_MAX

.最小值: -PHP_INT_MAX-1

相关文章
|
2天前
|
云安全 数据采集 人工智能
古茗联名引爆全网,阿里云三层防护助力对抗黑产
阿里云三层校验+风险识别,为古茗每一杯奶茶保驾护航!
古茗联名引爆全网,阿里云三层防护助力对抗黑产
|
6天前
|
人工智能 中间件 API
AutoGen for .NET - 架构学习指南
《AutoGen for .NET 架构学习指南》系统解析微软多智能体框架,涵盖新旧双架构、核心设计、技术栈与实战路径,助你从入门到精通,构建分布式AI协同系统。
305 142
|
2天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
405 0
|
3天前
|
传感器 人工智能 算法
数字孪生智慧水务系统,三维立体平台,沃思智能
智慧水务系统融合物联网、数字孪生与AI技术,实现供水全流程智能监测、预测性维护与动态优化。通过实时数据采集与三维建模,提升漏损控制、节能降耗与应急响应能力,推动水务管理从经验驱动迈向数据驱动,助力城市水资源精细化、可持续化管理。
267 142
|
2天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
本文介绍RAG(检索增强生成)技术,结合Spring AI与本地及云知识库实现学术分析AI应用,利用阿里云Qwen-Plus模型提升回答准确性与可信度。
204 90
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
|
17天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
2天前
|
机器学习/深度学习 人工智能 运维
智能照明稳压节能控制器,路灯节能稳压系统,沃思智能
智能照明调控柜集电力分配、远程控制与能耗管理于一体,支持自动调光、场景切换与云平台运维,广泛应用于市政、商业及工业领域,显著节能降耗,助力智慧城市建设。
184 137
kde
|
2天前
|
人工智能 关系型数据库 PostgreSQL
n8n Docker 部署手册
n8n是一款开源工作流自动化平台,支持低代码与可编程模式,集成400+服务节点,原生支持AI与API连接,可自托管部署,助力团队构建安全高效的自动化流程。
kde
266 3

热门文章

最新文章