整型| 学习笔记

简介: 快速学习整型。

开发者学堂课程【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

相关文章
|
8月前
|
编译器 C语言
C语言中整数如何自动转换为浮点数
C语言中整数如何自动转换为浮点数
459 0
|
8月前
|
存储 编译器
整型和浮点型数据的存储(1)
整型和浮点型数据的存储(1)
47 2
|
8月前
|
编译器 C++
【C/C++】C/C++编程——整型(二)
【C/C++】C/C++编程——整型(二)
85 2
|
8月前
|
存储 编译器 C++
【C/C++】C/C++编程——整型(一)
【C/C++】C/C++编程——整型(一)
66 1
|
8月前
|
存储 程序员 C语言
深入理解C语言中的整型数据类型及其应用
深入理解C语言中的整型数据类型及其应用
165 0
|
8月前
|
缓存 C语言
C语言中限定输入scanf的为整型(整数),浮点型
C语言中限定输入scanf的为整型(整数),浮点型
|
8月前
|
存储
进制转换和整型提升
进制转换和整型提升
|
C语言
整型提升
整型提升
104 0
【整型提升问题】
整型提升: 在计算机中,一个数据的类型如果是char 类型,以整型的形式打印该char类型的值时,会自动转换成整型,叫做整型提升。 整型提升的规则: 整型提升是按照变量的数据类型的符号位来提升 举例说明整型提升的存在:
|
存储 程序员 编译器
【浮点型的存储】整型:凭什么你比我特殊?
我们在前一章数据的存储中介绍了除了浮点数类型以外其他类型在内存中的存储,本章将给大家分享浮点数在内存中的存储的详解,希望我的文章能帮到大家.