C语言的数据类型

 一、基本类型

系统分配给基本类型的变量的内存大小是固定的,C语言已经定义好了这个类型
        
        1)整形

            

                int        4个字节(32bits)
               
                short    2个字节(16bits)
           
                long        
                    32位机器    4个字节(32bits)
                    64位机器    8个字节(64bits)


  unsigned 无符号
  代表所有的bit位都是数值
                
   signed  有符号
   最高位为符号位(只占1位) + 数值位
         1    -> 负数
         0    -> 正数
     



当CPU把数据进行运算时,不能直接把变量的数据进行计算的
         需要先把数据拷贝到 CPU内部的寄存器(32bits)
        再对寄存器的值进行计算
                
  当变量的数据小于32bits时,
        无符号的数拷贝到寄存器高位补0
         有符号的数拷贝到寄存器高位补符号位
            
      


 
        2)字符型
            char      1个字节(8bits)
                unsigned char   取值范围 0 ~ 255
                (signed) char   取值范围 -128 ~ 127
                
                例子:


                    char a = 260;
                    printf("%d\n", a);        //  4        


        
        3)浮点型(实型)
        
            float (单精度)    占4个字节(32bits)
            
                    31位(最高位)为符号位,占1bit, 1为负数,0为正数 
                    30~23bit 为 指数段 ,占8bits  ,指数加上127后 得到二进制数 
                    22~0bit 为 尾数段 ,占23bits
                
                例子: 
                    float d = 3.14;
                
            double(双精度) 占8个字节(64bits)

            例子: 
                将十六进制数 0xC1480000 转换成浮点数  
                    0xC1480000 
                --》 11000001 01001000 00000000 00000000
    
                --》 1      10000010   1001000 00000000 00000000
                    符号位   指数段       尾数段

                    符号位: 1  --》 负数 
                    
  指数段E: 10000010
        1000 0010 --》 130   --》  130-127  --》 3 即实际的指数部分为3
                    
  尾数段M: 1001000 00000000 00000000
           这里,在尾数的左边 省略存储了一个1,是以实际的尾数为
             1.10010000000000000000000
                    
     把这三个部分的数据单独拎出来后,
     通过指数部分E的值 来调整位数部分M的值
             方法: 


1、如果指数E为正数,尾数M的小数点就向右移
 2、如果指数E为负数,尾数M的小数点就向左移
3、小数点的移动位数有指数的绝对值决定
                            

  此时 E为3,是一个正数,尾数M的小数点就向右移3位 
   1.10010000000000000000000
    --》1100.10000000000000000000  
   至此,上面就是这个浮点数的二进制形式,然后再去转换成十进制 
   整数部分: 1100   ---》 12 
   小数部分: 10000000000000000000 --》 1 * 2^(-1)  --》 0.5
                    ==》 12.5 
     由于符号位为1,因此这个浮点数为 -12.5 
                        
    
    注意:
        在C语言中,整数的默认的类型为int,浮点数的默认的类型为double
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caisking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值