目录
数据类型
1.整形
unsigned表示无符号数,signed表示有符号数,特例是char没有规定哪个是无符号有符号
整形的二进制表现形式有3种
原反补
(正数原反补相同)
原码:二进制直接写出来,首位为符号位,正为0负为1,
反码:原码除开符号位取反
补码 :反码+1
反码转换为原码可以按以上步骤反过来-1取反,也可以直接取反+1.
大小端
内存中储存的是补码,并且是倒着存的
为什么?这就要引出一个概念,大小端
无符号转化
把一个有符号数转化为无符号数并不是大家认为的把-1变成1,不是字面上的去掉符号
无符号与有符号的区别是无符号的二进制首位不视为符号位,而是参与计算,
举个例子-1
原10000000000000000000000000000001
反1111111111111111111111111111111111110
补1111111111111111111111111111111111111
无符号
补1111111111111111111111111111111111111
反1111111111111111111111111111111111111
原1111111111111111111111111111111111111-》得出一个很大很大的数
2.浮点数
科学计数法
10.1 -> (-1)^S*M*2^E s=0 m=1.01 e=1
s : 正为0,负为1
m : 把小数点移位后范围为1-2,
e : 左移n位为n,右移n位为-n
存储
m存储不存首位,因为首位始终为1,这样就能多存一位
e存进去需要加127,因为考虑到e可能为负数
s为多少存多少
m存储不存首位,因为首位始终为1,这样就能多存一位
e存进去需要加1023,因为考虑到e可能为负数
s为多少存多少
指针类型
自定义类型
空类型
——————————————————————————————————————————
其他
%u是十进制打印无符号整形
因为整形数与浮点数存取方式不同,所以使用浮点数方式取出整形数会与预期结果不同