您的位置:首页 > 编程语言 > C语言/C++

数据的储存(一)(整形)(零基础学习C语言)

2021-02-15 00:05 1061 查看

本章重点

1.数据类型的详细介绍

内置类型就是C语言自己有的类型

根据存储形式具体分为:
char分为整形
是因为char类型的变量在计算机中存储的是ASCII码值
ASCII码值是int类型的
空间大小
存储类型

如:
打开内存后发现
整形和浮点型的存储形式不一样


unsigned(无符号)默认为正数,最高位不看做符号位,看做有效位(数字的范围会更大些)
signed(有符号)有正有负
计算机存储的是二进制的补码
最高位为符号位(0为正,1为负)
一般默认signed不写
即:signed int 写为int
这几种写法相同


去掉数组名剩下的就是数组类型

指针类型就是 相应类型加颗(*)

C语言中未规定,()传不传参数都可以

如果确定要无参
可以:

但是依旧跑的过去,不会报错,但是会报警告
2.整形在内存中的存储(原反补码)


注意:是有符号整数
最高位为符号位


原码,将二进制的最高位加上(0,1)对应的符号位即可

反码:
正数的反码与原码相同
负数的反码是符号位不变,其他位按位取反即可

补码:
正数的补码与原码相同
负数的补码是在反码的基础上加1即可

例如:
内存中向我们展示时是以16进制展示的
4个二进制数转化为1个16进制位

总结:
正数的,原码,反码,补码都相同
计算机中存放的是二进制的补码(大端存储还是小端存储得看编译器)



3.大小端字节序介绍及判断
a空间中存储的内容

b空间中储存的内容


大端存储:数据的低位放在内存高地址处
小端存储:数据的高位放在内存低地址处

都是相对而言的

描述的是字节存放的顺序而不是二进制位的顺序
1个字节8个bit2个16进制位
因为内存是以基本单位字节划分的


例:

写一个程序判断数据是大端存储还是小端存储

思路:
(描述的是字节存放的顺序而不是二进制位的顺序)
设置一个变量
将它赋值为1
看他的第一个字节是1还是0
如果是1则为小端存储
如果是0则为大端存储

利用指针取出第一个字节

char*访问一个字节

代码优化:

函数简化:

函数简化:

练习一:
记住-1的二进制补码为全1
1.(二进制补码)先转化为整形大小
2.-再截断为char
3.-最后整形提升得到补码再进行转换
(如果是有符号的,整形提升时前面补符号位)

练习二

char的不同类型的范围分析

注意有符号类型的char的范围是-128---->127
127+1=-128

练习三:
两个数的结果都是-128
都是-1

练习四:
将无符号数也转化为二进制的补码(为正数,原反补码相同)
有符号数也转化为二进制的补码
补码相加,进位的话舍去
最后按要求格式化为有符号整数

分析:

例题五:

死循环了
因为无符号数一定大于0
例题六:

strlen计算的是\0前的数字即是0前有多少个数字
有符号类型的char的范围是-128---->127

例题七:

死循环
unsigned char的范围是0---->255
条件恒成立
死循环

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐