二进制数据表示方式

整理一下,便于回忆

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

例如: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是浮点类型吗?
 
其他类型,以后补充,如有错误,欢迎指正。
 

 

posted @ 2016-03-02 22:59  大尾巴贝贝  阅读(2508)  评论(0编辑  收藏  举报