C语言第十六集(前)

1.关于那个整形存储入char的

是先取好补码,再截断

例:

C语言第十六集(前)_第1张图片

2.%u是以十进制的形式打印无符号整数

3.注意(背):存储的char类型变量的补码为10000000的直接解析为-128

4.signed char 类型的变量取值范围是-128~127

5.unsigned char 类型的变量取值范围是0~255

6.有符号类型的变量发生整形提升时,是按照它自己的最高位进行整形提升,而后才会选择去打印(即而后才看打印的   %?   对它的影响)

7.自己悟:

C语言第十六集(前)_第2张图片

图12345678搜

8.观摩:

C语言第十六集(前)_第3张图片

C语言第十六集(前)_第4张图片

总之,注意好那个无符号以及截断的特别

9.在小端环境下,int   的   1   计入内存中是   (十六进制表示)   (低地址)   01 00 00 00   (高地址)   ,   (低地址)   02是02 00 00 00   (高地址)

10.1E12表示的是1乘以10的12次方(已测过)

11.任意一个浮点数可以表示为这样的形式搜:

(数)V=(-1)^s*M*2^E
(-1)^s表示符号位,当S=0,V为正数;当S=1,V为负数
M 表示有效数字,M大于等于1且小于2
2^E表示指数位

12.将十进制的一个数字换位为二进制

例:

5.5换为101.1(前换前,后换后)

二进制的101.1可以用科学计数法化为1.011*2^2,根据国际标准,可以表示为:

(-1)^0 * 1.011 * 2^2

但是对于另一个例子:3.14,人为来配可能很难配

13.而十进制转二进制另另一个例题搜

14.对于float类型的和double类型的存储方式的不完全相同搜:

15.存储浮点型数据:在存储M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的XXXXXX部分。比如说保存1.01的时候,只保存后边的01,等到读取的时候,再把第一位的1加上去。这样做的目的是节省1位有效数字。以32位浮点数为例,留给M只有23位,而将第一位的1舍去以后,等于可以保存24位有效数字。

存储E时,因为E为一个无符号整数(unsigned int),那么如果E为8位,它的取值范围就为0~255;如果E为11位,它的取值范围就是0~2047。但科学计数法中的E是可以为负数的,所以IEEE 754规定存入内存时E的真实值必须再加上一个中间数,对于8位的E这个中间数是  127  ;对于11位的E,这个中间数是  1023  。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。

所以5.5的二进制序列就是:0   10000001 01100000000000000000000(1   8   23位)(不够的话补零)

//还原是还原为1.01100000000000000000000(1   23   位)

而0100 0000 1011 0000 0000 0000 0000 0000

换为16进制:40 B0 00 00(在内存中如果是小端存储则显示为00 00 b0 40)

16.浮点型从内存中的取出搜:

大概知道下浮点型的存储和取出即可

17.关于浮点型的存储和取出和整数的存储和取出转化的一个例题搜:

18.有些浮点数在内存中无法精确保存

19.正确比较浮点数的方式搜:

20.

你可能感兴趣的:(C语言,c语言,开发语言)