1. 数据类型详细介绍


浮点数家族:double float

2. 整形在内存中的存储:原码、反码、补码
原码
直接将二进制按照正负数的形式翻译成二进制就可以。
反码
将原码的符号位不变,其他位依次按位取反就可以得到了。
补码
反码+1就得到补码。
正数原码就是补码,负数符号位不变原码按位取反再加一就是补码
补码是为了将减法转换成加法.
大端小端:
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址
中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地
址中。
小端字节序: 低位放在低地址
大端字节序:高位放在低地址
举一些经典例子
当char类型向int类型强制转换时,缺少的位都用符号位补齐,也就是第一位数字
当使用unsigned char无符号时,补0.
下面是例子代码
int main()
{
char a[1000] = {0};
int i=0;
for(i=0; i<1000; i++)
{
a[i] = -1-i;
}
printf("%d",strlen(a));
return 0;
}
想要知道这个代码的输出结果:
a是字符型数组,strlen找的是第一次出现尾零(即值为0)的位置。考虑到a[i]其实是字符型,如果要为0,则需要-1-i的低八位要是全0,也就是问题简化成了“寻找当-1-i的结果第一次出现低八位全部为0的情况时,i的值”(因为字符数组下标为i时第一次出现了尾零,则字符串长度就是i)。只看低八位的话,此时-1相当于255,所以i==255的时候,-1-i(255-255)的低八位全部都是0,也就是当i为255的时候,a[i]第一次为0,所以a[i]的长度就是255了
本文总结了数据类型,特别是浮点数和整型在内存中的存储方式,包括原码、反码和补码的概念。还探讨了大端和小端存储模式,解释了字节序在内存布局中的作用。最后通过示例代码解释了字符数组转换为整型时的处理规则,并讨论了strlen函数如何确定字符串长度。

被折叠的 条评论
为什么被折叠?



