zoukankan      html  css  js  c++  java
  • 二进制数据表示方式

    整理一下,便于回忆

    正数存储->首位表示符号位->原码存储

    例如:8位int数据 int8

    1->0 000 0001

    负数存储->首位为符号位->原码->取反码->取补码

    例如:8位int数据  int8

    -1->1 000 0001->1 111 1110->1 000 0010

    为何要取反码和补码?

    1.方便减法运算:

    如:8-3,对3先取反变为(0-3),然后直接相加变为8+(0-3),完成减法

    2.计算机存储要求一一对应,如果不去取补码,将会出现-0,取补码可以解决

    浮点型存储:

    存储形式:

    计算公式

    说明:

    S表示符号位。对应值s满足:n>0时,s=0; n<0时,s=1。
    E表示指数位,位于S和M之间的若干位。对应值e值也可正可负。
    M表示尾数位,也叫有效数字位(significand)、系数位(coefficient), 甚至被称作"小数"。
    浮点型数据包括:
    名字 位数 精度 范围
    float 32 7 ±1.5 × 10?45 to ±3.4 × 1038
    double 64 15/16 ±5.0 × 10 ?324 to ±1.7 × 10308
    浮点数的精度如何得到?
     
    答:因为浮点数只有23位(float),2^23换算成十进制有7位数字
    浮点数为何损失精度?
    答:因为二进制不能完整表示出某些小数
     
     
    decimal数据类型
    decimal 内部使用 4 个 32-bit 的 System.Int32 来存储,占用 128 bits = 16 bytes
    存储结构
    由 1 位符号、96 位整数以及比例因子组成,比例因子用作 96 位整数的除数并指定整数的哪一部分为小数。比例因子隐式地定为数字 10 的幂,指数范围从 0 到 28。因此,Decimal 值的二进制表示形式为:((-296 到 296) / 10(0 到 28))
    类型 位数 精度 范围
    decimal 128 28 到 29 位有效位 ±1.0 × 10-28 到 ±7.9 × 1028
    C#中如果希望实数被视为 decimal 类型,请使用后缀 m 或 M
     
    问题:decimal是浮点类型吗?
     
    其他类型,以后补充,如有错误,欢迎指正。
     
  • 相关阅读:
    13张PPT带你了解主动式消息队列处理集群
    TomatoLog-1.1.0实现ILoggerFactory
    番茄日志发布1.0.3版本-增加Kafka支持
    博客园升级有感一点建议
    上车时机已到--.NETCore是适应时代发展的雄鹰利剑
    花5分钟时间来了解一下高性能网关Kong会有意外收获
    Asp.NETCore让FromServices回来
    高速输出-我们戏说缓存
    Consul-template+nginx实现自动负载均衡
    Consul初探-集成ocelot
  • 原文地址:https://www.cnblogs.com/feichangnice/p/5236881.html
Copyright © 2011-2022 走看看