整数,浮点数在内存中的存储

来源:互联网 发布:java interface 调用 编辑:程序博客网 时间:2024/06/05 20:15

整数

符号数:符号位(零正一负)+数值位

表示方法:(以-1为例)

原码:1000 0000 0000 0000 0000 0000 0000 0001

反码:1111 1111 1111 1111 1111 1111 1111 1110(符号位不变,其它位按位取反)

补码:1111 1111 1111 1111 1111 1111 1111 1111(内存存放形式)

大端模式:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。

大端模式:数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

判断:

#include<stdio.h>int check_sys(){int i=1;return (*(char*)&i);}int main{int ret=check_sys();if(ret==1){printf"小端\n");}else{printf("大端\n");}return 0;}
char a=-1;(输出-1)signed a=-1;(输出-1)unsigned a=-1;(输出255)*unsigned:无符号类型,不存在原反补,直接拿出来*-1的补码:1111 1111——转化二进制为255

浮点数

包括float,double,long double类型
*p Float=9.0;

float pFloat=(float)#

printf(“num值为:%d\n”,*pFloat);(输出1091567616)

printf(“*pFloat值为:%d\n”,*pFloat);(输出9.000000)

“`

析:9.0

1001.0

1.001*2^3

0 10000010 00100000000000000000000

1091567616

表示形式:V=(-1)^S*M*2^E

      S=0 V为正数 S=1 V为负数      M表示有效数字  1<=M<2      2^E表示指数位(E+12以单精度存入;E+1023以双精度存入)

32位浮点数
这里写图片描述
64位浮点数
这里写图片描述
static的总结
1,修饰全局变量,改变的是链接属性(外部链接属性——>内部链接属性)
2,修饰局部变量,改变的是存储类型(自动——>静态),同时影响生命周期。
注:不改变作用域。
3,修饰函数,改变链接属性。