数据的储存(一)(整形)(零基础学习C语言)
本章重点
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
条件恒成立
死循环
- 黑马程序员——零基础学习iOS开发——05 C语言:进制、内存储存细节、类型说明符、位运算、数组
- C语言基础学习------2、C语言数据类型
- 数据类型,运算符和表达式04 - 零基础入门学习C语言05
- C语言基础学习基本数据类型-Char类型
- C语言学习基础(二)—— 数据类型
- 数据类型,运算符和表达式01 - 零基础入门学习C语言02
- 数据类型,运算符和表达式05 - 零基础入门学习C语言06
- 数据类型,运算符和表达式02 - 零基础入门学习C语言03
- 【零基础学习iOS开发】【02-C语言】07-基本数据类型
- 黑马程序员-IOS学习笔记-C语言基础其他数据类型及总结
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
- iOS学习笔记之-C语言基础02(关键字、标识符、注释、数据类型)
- 数据类型,运算符和表达式03 - 零基础入门学习C语言04
- 数据类型,运算符和表达式03 - 零基础入门学习C语言04
- 数据类型,运算符和表达式02 - 零基础入门学习C语言03
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】07-基本数据类型
- C语言学习入门--基础数据类型(二)
- C语言编程基础学习字符型数据的ASCII码值为何是负数?
- C语言学习入门--基础数据类型(二)
- 数据类型,运算符和表达式01 - 零基础入门学习C语言02