【学习笔记】2022.10.9 c语言 数据的存储

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <Windows.h>

#include <stdlib.h>

#include <string.h>

#include  <time.h>

#include <math.h>

#include <assert.h>

//unsigned char无128 -- 10000000为-128

//unsigned char - [0,127] || [129,255]

//浮点数的表现方式:(-1)^S * M * 2^E
// 
//S为符号位,S = 0为正,S = 1为负
// 
//M表示有效数字,1 <= M < 2
// 
//2^E表示数位
//
//例:5.5转化为二进制 -> 101.1,小数点后的1代表2^(-1)
//    转化为科学计数法:(-1)^0 * 1.011 * 2^2

//对于float的储存:(单位bit,按存储顺序)
// S -- 1
// E -- 8
// M -- 23 

//对于double的储存:(单位bit,按存储顺序)
// S -- 1
// E -- 11
// M -- 52

//其中M一定为1.xxxxxx,故个位的1不存储,M在内存中只存小数点后的数

//E是无符号数
// 
//x在E中存的是x + 1/2 * Emax的最高位
//
//即对于float,E = -1 -- -1 + 127 = 126,内存中实际存的是126
//对于double,E = -1 -- -1 + 1023 = 1022,内存中实际存的是1022
//
//当E存的全是0(1),表现为无穷小(无穷大),与M的值无关

int main()
{

    int a = 1;

    float b = 9;
    
    printf("%f\n", a);//0.000000
                      //1 -- 0 00000000 00000000000000000000000
                      //E全为0 -- 无穷小

    printf("%d\n", a);//1

    printf("%f\n", b);//9.000000

    printf("%d", b);//linux环境下输出一个很大的数
                    //1.001 * 2^3
                    //S = 0; E = 3; M = 00100000000000000000000
                    //0 10000010 00100000000000000000000 -- 打印出的是这个数的十进制

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值