9.1-9.3课程总结

这几天真的有点放松了,感觉自己心不在焉,三天才草草听完一节数据类型的一节课

手机对我来说真是一项很大的干扰项,我现在感觉自己不在状态,努力调整以下

下面把我这三天的收获总结在下面这个代码是在x86环境下才能实现无限循环  ,在x64下不能,且在release版本下不能实现无限循环

所以一个代码在不同环境下的实现方式不同,而且这也恰恰印证了release版本会对一些代码做一些优化,只不过在宏观上release版本的代码大小比较的小   实际上release版本是以什么规则对代码  进行优化我们也不得而知1.类型的意义,使用这个类型 开辟内存的大小(大小绝对了使用范围)。

2.如何看待内存空间的视角。

所谓视角就是  比如 int  他会以整形类型的视角访问

float会以浮点型类型的视角去访问

这些都是C语言的内置整形  其中long类型比较特殊 ,在x86的环境中是访问4个字节大小,在x64环境中是访问八个字节

longlong 也是整形家族的一员,是在c99标准实行之后才新加上去的类型 长整型

字符的本质是ascll码值,是整形,也划分到整形家族去

char 可以分为三种类型  char  signed char   unsigned char 
但是int 不是  平常写的int 等价于 signed int
char就不一定了  char到底是signedchar  还是unsignedchar  是标准未定义的,取决于编译器
取决于编译器的实现

如果想表示的数没有负数的概念可以直接用unsigned int   如果此时符号位 为1  表示的将不再是负数 ,而是2的31次方这个数字
 

这是浮点型家族    double类型的精度更高一些

同样的。我们还有构造类型

所谓构造就可以通过自定义类型去实现我们想要实现的功能 ,比如枚举enum   union   struct类型

指针类型,指针是提升效率的工具,学会使用指针 才算真正学过c语言

空类型,当我们不知道放啥的时候 就可以放void    NULL就是空指针的意思内存显示为0

比如第一个void 表示函数不返回值  第二个void表示函数不需要传任何参数

数值有不同的表示形式 
2进制 
8进制,10进制
16进制
比如十进制的21
二进制的表示形式 是  0b  10101   0b是二进制的意思
八进制     0   25    0是八进制的意思  
十六进制   0x  15  0x是十六进制的意思
 

整数的二进制的表示也有三种表示形式:
原码,反码,补码,
内存存储的补码 ,原码是打印出来的   反码是原码除了符号位不变,其他按位取反
 

正的整数,原码反码补码相同。
负的整数。原码反码补码是需要计算的 
原码:直接通过正负的形式写出的二进制序列就是原码
反码:原码的符号位不变,其他按位取反得到的就是反码
补码  :反码+1就是补码
 

内存中本质上还是二进制,但是为了方便显示给我们看 ,用的16进制
这里就说明 内存中存的是补码

为什么是补码呢    因为cpu只能计算加法    

原码转换补码是  先除了符号位按位取反+1得到补码   

补码转换原码一样的 ,符号位不变,其他按位取反在加一,也能得到原码

所以说补码与原码相互转换,其计算过程是相同的,不需要额外的硬件电路

比如说计算 1-1  的时候 ,实际上在cpu上计算的时候计算的是1+(-1)

这样也就是两个的补码进行计算,然后装换成原码进行打印

这是今后学习的大概路线

-------------------------------大小端 

大端也就是正着存,低位放到高地址 ,高位放到低地址

小端就是反着存,低位放到低地址 ,高位放到高地址

这个图会做出一切解释

一个字节没有大小端的问题,当超过两个字节,就有大小端的问题了

所谓大端小端,实际上还是取决于机器硬件的问题,机器的不同可能大端小端也不同

我们可以通过设计来确认大端小端

比如 我们给一个整形int 类型赋值为1

通过char *指针的知识获取他的第一个字节  如果为  0说明正着存 为大端

如果为1说明反着存为小端  

如果是 无符号数,就是高位这一位不是符号位,而是有效位   
也就是没负数的概念了
unsigned char  类型的取值范围 0-255
short同理,也可以讨论 是否有符号位 ,也就是是否是符号
如果是unsigned  short  的话数值的取值范围0-65535
signed short  的取值范围为      -32768-32767
 

%d是指打印有符号位的整形
这个时候char 类型会发生整型提升
整型提升的规则就是 如果为有符号类型的整形,那么高位补符号位
如果是无符号位的整形,高位补0  
整形提升是使用时达不到一个整形大小,才会提升
 

大小端只是内存存储的一个手段罢了
跟整型提升等没多大关系  ,怎么放,怎么取出来,顺序都不会变 

算数转换只是类型会发生转换,但是本身的值不会发生转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值