zoukankan      html  css  js  c++  java
  • C语言再学习——数据类型

    C语言数据类型

     

    原码:最高位表示符号位:0表示+,1表示-;

    [+1] = 0000 0001

    [-1] = 1000 0001

     

    反码:

    反码转反码:对反码再一次求反码

    正数的反码是其本身;

    负数的反码是其原码的基础上,符号位不变,其他位各个取反。

    [+1] = [00000001] = [00000001]

    [-1] = [10000001] = [11111110]

     

    补码:

    补码转原码: 对补码再一次求补码

    正数的补码是其本身;

    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

    [+1] = [00000001] = [00000001] = [00000001]

    [-1] = [10000001] = [11111110] = [11111111]

     

    在计算机内部不使用原码(原因:由于在做减法计算时会出现错误),反码(原因:对于0这个数值比较特殊,+0和-0的反码表示不同)表示数值。计算机采用的是补码进行采用存储数据。

    详见:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

     

    数据类型决定了占用内存空间大小。

    高占位浮可以打印低占位浮,使数据的大小不会缺失,但是低占位打印高占位可能导致数据的缺失。例如:int类型可以打印short类型和char类型。

     

    float类型:

    无论是单精度还是双精度在存储中都分为三个部分:

    1. 符号位(Sign) : 0代表正,1代表为负
    2. 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
    3. 尾数部分(Mantissa):尾数部分

     

    其中float的存储方式如下图所示:

     

    而双精度的存储方式为:

     

     

     

    float和double类型是有精度问题的:float到小数点第6位,double类型的精度是到小数点后面第15位。

     

    如非声明,则为原创 糊涂猫until

     

  • 相关阅读:
    (easy)LeetCode 223.Rectangle Area
    (easy)LeetCode 205.Reverse Linked List
    (easy)LeetCode 205.Isomorphic Strings (*)
    (easy)LeetCode 204.Count Primes
    (easy)LeetCode 203.Remove Linked List Elements
    (easy)LeetCode 202.Happy Number
    (easy)LeetCode 198.House Robber
    (easy)LeetCode 191.Number of 1 Bits
    试题分析
    使用ADO.NET访问数据库
  • 原文地址:https://www.cnblogs.com/BeyondAverage0908/p/4546157.html
Copyright © 2011-2022 走看看