二进制数据表示方式

整理一下,便于回忆

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

例如: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是浮点类型吗?

其他类型,以后补充,如有错误,欢迎指正。

时间: 2024-11-04 12:55:20

二进制数据表示方式的相关文章

【计算机概论】数据表示方式与软件程序运行

数据表示方式 数字系统 本质即二进制与十进制的相互转换. 文字编码系统 常用的英文编码表为ASCII系统,这个编码系统中,每个符号(英文,数字或符号等)都会占用1B的记录. 中文当中的编码系统最常用的是big5(简体是GB2312)编码表.每个中文字符占用2B. 为了解决某些生僻字被识别成乱码的问题,由国际组织ISO/IEC指定了所谓的Unicode编码系统,即UTF8或统一码,从而打破了所有国家的不同编码. 软件程序运行 目前的计算机系统将软件分为两大类,一个是系统软件,一个是应用程序. 机器

MySQL简介以及二进制程序方式安装

数据的组织结构 层次型 网状型 关系型 使用DBMS的优点 1,数据管理独立性: 2,有效的完成数据存取: 3,保证数据完整性和安全性: 4,数据的集中管理: 5,并发存储与故障恢复: 6,减少应用程序开发时间: 数据库管理系统(DBMS)设计的目标 为了解决: 1,数据的冗余和不一致: 2,数据访问困难: 3,数据孤立: 4,数据完整性问题: 5,数据原子性问题: 6,并发访问问题: 7,安全性问题: DBMS的组件 1,分析器: 2,计划执行器: 3,优化器: 4,文件的存取方法: 5,缓存

MySQL安装:MariaDB二进制包方式安装

MySQL那是相当流行的关系型数据库有之一,随着MySQL被Oracle收购后开源的前途未卜,gooogle, 非死不可等都开始转入mysql开源社区维护的另一个开源mysql分支MariaDB上去了,Maria是mysql创始人Michael Widenius的二女儿的名字,MariaDB完全兼容MySQL, 使用Percona维护的XtraDB(代号Aria)来代替InnoDB引擎,比InnoDB有很多优化等,另外对并行复制(Parallel Replication).多源复制(Muti-S

Centos7.5安装mysql5.7.24二进制包方式部署(keepalived+主从复制)

一.环境准备: 操作系统:CentOS Linux release 7.5.1804 (Core) mysql版本:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz主库:172.16.8.247从库:172.16.8.249主机名:172.16.8.247 qas-zabbix-node01172.16.8.249 qas-zabbix-node02172.16.8.248 vip 二.mysql5.7安装及主从复制配置 主库:172.16.8.247从库:1

Centos7.5安装mysql5.7.24二进制包方式部署(主从复制)

一.环境准备: 操作系统:CentOS Linux release 7.5.1804 (Core) mysql版本:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz主库:172.16.8.247从库:172.16.8.249主机名:172.16.8.247 qas-zabbix-node01172.16.8.249 qas-zabbix-node02 二.mysql5.7安装 主库:172.16.8.247从库:172.16.8.249数据安装参考:一.Cen

float浮点数的二进制存储方式及转换

int和float都是4字节32位表示形式.为什么float的范围大于int? float精度为6-7位.1.66*10^10的数字结果并不是166 0000 0000 指数越大,误差越大. 这些问题,都是浮点数的存储方式造成的. float和double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53. 无论是单精度还是双精度在存储中都分为三个部分: 符号位(Sign) : 0代表正,1代表为负 指数位(Exponent):

在Centos6.8采用通用二进制的方式安装MySQL5.7.13

安装环境:Centos6.8 目的:通过通用二进制(Generic Binary)的方式安装MySQL5.7.13 所需软件:mysql-5.7.13-linux-glibc2.5-x86_64.tar(请自行从MySQL官网下载) 步骤: 1.创建mysql用户,mysql组 groupadd -g 3306 mysql useradd -g mysql -u 3306 -s /sbin/nologin -M mysql id mysql #查看是否创建成功 2.通过逻辑卷的方式创建MySQL

SuSE11安装MySQL5.7.22:二进制安装方式、单实例

摘要:SuSE11sp3 64位操作系统. MySQL5.7.22 二进制安装包.单实例 注:kingtry是我的主机名 一.环境准备 操作系统:SuSE版本11sp3,64位 kingtry:~ # uname -a Linux kingtry 3.0.76-0.11-default #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990) x86_64 x86_64 x86_64 GNU/Linux kingtry:~ # cat /etc/SuSE-rel

SuSE11安装MySQL5.6.41:二进制安装方式、单实例

摘要:SuSE11sp3 64位操作系统. MySQL5.6.41 二进制安装包.单实例 注:kingtry是我的主机名 一.环境准备 操作系统:SuSE版本11sp3,64位 kingtry:~ # uname -a Linux kingtry 3.0.76-0.11-default #1 SMP Fri Jun 14 08:21:43 UTC 2013 (ccab990) x86_64 x86_64 x86_64 GNU/Linux kingtry:~ # cat /etc/SuSE-rel