【C语言内功】“数据在内存中的存储“(二)

简介: 【C语言内功】“数据在内存中的存储“

九.有符号数和无符号数的取值范围

ps:特殊规定10000000(-128)

image.pngimage.png

image.png

1.几道练习题

例1:无符号变量有时候可能会导致死循环注意条件

image.png

image.png

例2:有符号数char的取值范围,(结合圆形图加深理解)

image.png

0000000000000000000000010000000原反补
截断
10000000
整型提升
1111111111111111111111110000000
最后打印4294967167(无负号)
128在一个有符号的char(-128~127)永远放不下

image.png

image.png

重点:strlen要关注到\0的字符,也就是ascall码值0;且是按照字节进行查找;

十.浮点型在内存中的存储

    1.常见的浮点数: 3.142 / 1E10  (1.0*10) 10次方


    2.浮点数家族包括float,double,long,double


    3.根据国际标准IEEE(电器和电子工程协会)754,任意一个二进制浮点数V可以表示成下面的形式:


(-1)^S    *    M    *    2^E

(-1)^S 表示符号位,当S=0时,其为正数;当S=1时,其为负数;

2^E表示指数位;

M表示有效数字,(大于等于1,小于2);

例如:


image.png

image.png

浮点数会丢失精度的原因 :

                                                    十进制数的二进制表示形式可能不精确  

image.png

十.浮点数空间储存划分

image.png

image.png

十一.浮点数的一些特殊规则

image.png

   例如:1.001——>001  000000000000000000000

image.png

   PS:对于64位浮点数:则需+1028

例如:

image.png

十二.指数位如何从内存中取出(三种情况)

情况一:E不全为0或不全为1

image.png

情况二:E全为0

image.png

情况三:E全为1

image.png

例题分析: 如何解释下面的代码结果

image.png

对于第二行出现0.000000分析:不难发现是E全为0的情况

image.png

对于第三行出现1091567616分析:不难发现是考察浮点数的存入(题中以整型打印)

image.png

相关文章
|
8天前
|
存储
数据在内存中的存储之整数存储
数据在内存中的存储之整数存储
15 0
|
9天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
3天前
|
存储 C语言 开发者
【C言专栏】C 语言实现动态内存分配
【4月更文挑战第30天】C语言中的动态内存分配允许程序运行时按需分配内存,提供处理未知数据量的灵活性。这涉及`malloc()`, `calloc()`, `realloc()`, 和 `free()`四个标准库函数。`malloc()`分配指定大小的内存,`calloc()`同时初始化为零,`realloc()`调整内存大小,而`free()`释放内存。开发者需谨慎处理内存泄漏和指针使用,确保程序的稳定性和性能。动态内存分配是C语言中的重要技能,但也需要良好的内存管理实践。
|
4天前
|
存储 程序员 C语言
C语言进阶第九课 --------动态内存管理-2
C语言进阶第九课 --------动态内存管理
|
4天前
|
编译器 C语言
C语言进阶第九课 --------动态内存管理-1
C语言进阶第九课 --------动态内存管理
|
8天前
|
存储 算法
【三种方法】求一个整数存储在内存中二进制中的1的个数附两道课外练习题
【三种方法】求一个整数存储在内存中二进制中的1的个数附两道课外练习题
7 0
|
9天前
|
程序员 编译器 C语言
C语言知识:动态内存管理(malloc free calloc realloc)
C语言知识:动态内存管理(malloc free calloc realloc)
|
9天前
|
存储 编译器 C语言
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
|
11天前
|
存储 C语言
C语言动态存储方式与静态存储方式
C语言动态存储方式与静态存储方式
7 0
|
8天前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
30 4