数字在计算机中的表示——正负小数,正负整数,float,double

正整数与负整数

需要了解原码,反码与补码,计算机中是用补码的形式来表示的。

补码的数学原理是正数同余数,这些在网上的资料比较多。也比较好找,所以就不记录了。

正小数与负小数

  1. 首先来看正小数是怎么计算二进制的。

0.5(十进制)= 2^(-1)(十进制)= 0.1(二进制)

对一个小数0.55,可以按照以下方式求其二进制表示

  • 0.55 * 2 = 1.1 ————1(取整数部分)
  • 0.1 * 2 = 0.2(1.1-1 = 0.1)————0(取整数部分)
  • 0.2 * 2 = 0.4(0.2 - 0 = 0.2)————0(取整数部)
  • 0.4 * 2 = 0.8 ————0
  • 0.8 * 2 = 1.6 ————1
  • 0.6 * 2 = 1.2 ————1
  • ……(有循环了)

所以0.55(十进制)= 0.100011 0011 0011……

  1. 正小数是怎么进行表示的

  • 定点表示法

约定好一串二进制数中前 a 位表示整数部分,后 b 位表示小数部分,例如:0011.1100,0111.0000

  • 浮点表示法

浮点表示法可以理解为二进制的科学计数法。

例如:5.5(十进制) = 0101.1000(二进制)= 1.011 * 2^2

其中1.011叫做尾数,2^2的第一个2叫做底数,第二个2叫做指数。

在32位的系统中,float类型的变量占据32位,自左向右,第一位是符号位,接着8位是指数位(阶码),然后23位是尾数位。

符号位:1代表负数,0代表整数。

指数位(阶码):代表浮点表示法的指数。

尾数位:由于浮点表示法的尾数一定是1.xxx,所以尾数位只记录小数点后面的二进制串,可以记录到小数点后面的23位。

  1. 负小数在计算机中的表示方法

C语言吧定点数转化为补码再写入内存,浮点数直接把原码写入内存,整数是定点数,小数是浮点数。首先来讨论下 float 类型的浮点数。

  • 指数位的表示方法:由于浮点数是用原码来表示的,但是指数是有符号的,所以要设计一个巧妙的方法来表示正负。在 float 里面,指数位是8位,表示 [ 0 , 255 ] ,我们用 [ 0 , 127 ] 来表示负数,[ 128 , 255 ] 来表示正数,所以对指数,在存为 float 类型时要加127。比如指数为 4 ,在内存中就需要表示为 1000 0011(131的二进制表示)。
  • 对阶:两个浮点数进行运算的时候,需要根据指数的大小把尾数进行移位,把位进行对齐,才能运算。对阶会把隐藏位 “ 1 ” 给显现出来。同时对阶过程中,右移的尾数位会被丢掉,会造成误差。
  • 尾数位的存储需要进行近似,有 “恒置1” 和 “0舍1入” 方法。“0舍1入”我也不知道是啥意思。

double类型的浮点数跟float类型的浮点数是类似的,这里不多讲。

数字在计算机中的表示——正负小数,正负整数,float,double相关推荐

  1. mysql小数类型字段_mysql小数类型字段,float,double

    mysql float double类型 1.float类型 float列类型默认长度查不到结果,必须指定精度, 比如 num  float,  insert into  table (num) va ...

  2. Mysql在可视化工具navicat中如何解决输入小数变整数的问题,(改变小数位数)

    方法一 1.点击你选中的表,单击设计表 2.单击字段名,将类型改为double,小数点改为你想保留的几位小数,最后再保存 注:上图中的"填充0"可勾选,若选中,有一个数字输入的时候 ...

  3. 正则表达式匹配正负小数以及整数

    直接就是干: ^[\\+\\-]?[\\d]+(\\.[\\d]+)?$

  4. 为什么大部分小数在计算机中是不准确的

    思考:数字在计算机中是以那种方式储存的 答案:是以二进制的形式在计算机中储存的. 问:为什么大部分小数在计算机中是不准确的?有没有例外? 例如:写一个number类 package number类:/ ...

  5. 为什么计算机中的负数要用补码表示?

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在前面的文章里,我们聊到了计算机的冯·诺依曼架构的 3 个基本原则.其中第 1 个 ...

  6. 计算机中的二进制实验报告,+实验二 计算机的数据表示和计算.doc

    实验2 计算机中的数据表示与计算 实验报告 学号1500202151 姓名叶思凡 班级:卫生检验与检疫15 实验时间: 2017年 3 月 2 日 实验报告表2-1 数值型数据在计算机中的二进制实验记 ...

  7. 计算机中定点数和浮点数表示

    背景: 小数点在计算机中通常有两种表示方法: 1.一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数 2.计算机中使用浮点数表示小数类似于以前数学中用科学计数法表示较大的 ...

  8. 大学计算机 信息编码与数据表示什么意思,大学计算机之-计算机中信息编码ppt课件...

    <大学计算机之-计算机中信息编码ppt课件>由会员分享,可在线阅读,更多相关<大学计算机之-计算机中信息编码ppt课件(39页珍藏版)>请在人人文库网上搜索. 1.大学计算机, ...

  9. mybatis字符串转成数字_计算机储存数字和字符的方法你了解多少?

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 本文链接: http://1t.click/J7E 前言 最近在学习中涉及到计算机储存.传输数字和字符等操作,由于对字节.2进制.10进 ...

  10. 第三章 变量和数据类型_C语言中的小数(float,double)

    小数分为整数部分和小数部分,它们由点号.分隔,例如 0.0.75.0.4.023.0.27.-937.198 -0.27 等都是合法的小数,这是最常见的小数形式,我们将它称为十进制形式. 此外,小数也 ...

最新文章

  1. 逻辑模型设计步骤-粒度层次划分
  2. Task.Run vs Task.Factory.StartNew
  3. Android总结之链式调用(方法链)
  4. Tomcat5+Mssql server 2000数据库连接池配置
  5. 3D点云论文汇总-实时更新
  6. android 网易item广告,Android仿网易严选商品详情页
  7. simulink同步发电机模型_基于Speedgoat的永磁同步电机控制Demo
  8. 咸鸭蛋吃了对身体有什么好处?
  9. “升级 iOS 最新系统后,我弃用了 iPhone!”
  10. (暴力求解)百钱买百鸡问题升级版
  11. 弹性地基梁板实用计算_3款实用性高的农村别墅,造价低,越看越有韵味
  12. 下载Android5.1源代码
  13. 数学建模--偏最小二乘法
  14. OpenCV之图像轮廓
  15. 什么是HyperText Transfer Protocol 超文本传输协议
  16. JavaMail学习6 发送邮件
  17. Java动态代理的理解
  18. 贪心算法---Huffman编码---神秘电报密码
  19. 分布式系统三大指标:可扩展性、一致性、持久性
  20. 英文学习——100个经典句型

热门文章

  1. 20172302 《Java软件结构与数据结构》第五周学习总结
  2. 计算机科学与技术高校毕业生要求,计算机科学与技术 毕业要求(2020)
  3. SpringBoot+支付宝支付(沙箱)
  4. PeopleSoft
  5. 目标跟踪(4)使用dlib进行对象跟踪
  6. 浏览器JSON的插件(JSON-handle)使用问题
  7. Pyecharts上的颜色设置
  8. i5 12400f参数 i512400f评测
  9. MFS详解(一)——MFS介绍
  10. 最近在测FREEBSD平台下ISP邮件系统前的准备知识摘录