栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言的数据类型

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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("%dn", 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
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983743.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号