网站换空间有影响吗,免费 网站 空间,自己做的网站添加交费功能,广州门户网站建设公司非一般的小数#xff1a;小数的概念新解、小数分类、浮点数的存储 一、小数的概念二、小数的分类1#xff0e;有限小数、无限循环小数、无限不循环小数2#xff0e;纯小数、带小数3#xff0e;定点数、浮点数 三、浮点数的存储 一、小数的概念
这还用解释吗#xff1f;小… 非一般的小数小数的概念新解、小数分类、浮点数的存储 一、小数的概念二、小数的分类1有限小数、无限循环小数、无限不循环小数2纯小数、带小数3定点数、浮点数 三、浮点数的存储 一、小数的概念
这还用解释吗小学三年级就开始学你当我是吃干饭的 那么请尝试回答以下几个问题
所有的分数都是小数吗所有的小数都是分数吗8.0是不是小数8是不是小数整数是不是小数有理数是不是小数无理数是不是小数实数是不是小数
小数可不是看着那么简单它实在是“非同一般”的数。 先看看小学课本中的定义 有点草率哈也难怪小学三年级这样说孩子最容易理解。 再看看百度百科中的定义 小数是实数的一种特殊的表现形式。所有分数都可以表示成小数小数中的圆点叫做小数点它是一个小数的整数部分和小数部分的分界号。其中整数部分是零的小数叫做纯小数整数部分不是零的小数叫做带小数。 这里面有两个关键词实数、表现形式。 “小数是实数的一种特殊的表现形式”这句话道出了小数的本质 (1)小数是数的一种表现形式 什么叫表现形式就是表现在外面的形式上的东西它无关本质。好比人的衣服它并不能真正代表这个人。 好比同样是数字有罗马数字、阿拉伯数字、中文数字、财务上还有专用的大写数字它们统统都是数字的表现形式。 因此说到底小数只不过是数的一种写法而已。 只要一个数能写成这样的形式整数部分.小数部分那么它就是小数。所以说小数完全是形式化的东西。 (2)只要是实数都能用小数的形式表现出来 任何实数都能写成小数。 用一张图可以表示出小数与实数范围内其他数的关系 比如前面说的整数8可以写成小数8.0、8.00、8.0000。 这里老金要指出一个关于小数的个人观点不一定对仅供参考。 老金认为在表述小数和实数范围内的数之间的关系时一定要注意用词。比如我们能说“实数可以写成小数”、“整数可以写成小数”但不能说“实数是小数”、“整数是小数”。 如果说“实数是小数”、“整数是小数”那数学就要乱套了。 这就好比我们可以说“数字都可以写成阿拉伯数字”但不能说“数字是阿拉伯数字”。 因为上图中黑色部分都是根据数本身的不同性质进行分类的只有小数不同它只和写法有关和性质无关。因此小数和图左边那些数是完全不同的数不能混为一谈。 所以前面提的那一大堆问题只有“8.0是不是小数”这一条是肯定的。 据此老金认为我们小学时都学到的一个说法可能是不严谨的 π \pi π是无限不循环小数。 老金认为严格来讲我们可以说“ π \pi π可以写成无限不循环小数”但不能说“ π \pi π是无限不循环小数”。
二、小数的分类
1有限小数、无限循环小数、无限不循环小数
按小数点后的数字的性质可分为 有限小数小数点后只有有限个数字的小数如0.5、0.25、1.75等。有限小数都可以表示为两个整数的比分母不为0。 无限小数小数点后有无限多个数字。分为两类
无限循环小数小数点后的数字序列中有一部分数字会无限重复。比如0.333…或写作0. 3 ‾ \overline{3} 3、0.142857142857…或写作0. 142857 ‾ \overline{142857} 142857。无限循环小数也可以表示为两个整数的比。无限不循环小数小数点后的数字序列不会重复也不会终止。比如π、e自然对数的底数、 2 \sqrt{2} 2 等。无限不循环小数不能表示为两个整数的比。
2纯小数、带小数
按整数部分是否为0可分为 纯小数整数部分为0的小数。 带小数整数部分不为0的小数。
3定点数、浮点数
按小数在计算机中的表示形式可分为 定点数指小数点在数中的位置是固定不变的。因为位置固定所以实际上不需存储小数点。理论上讲可以约定把小数点放在任何位置但通常将其放在最后纯整数除符号位所有数都表示整数或最前纯小数除符号位所有位都表示纯小数。 浮点数小数点的位置是不固定的这使得浮点数可以表示非常大或非常小的数。 浮点数通常使用科学计数法来表示即 M × R E M \times R^E M×RE其中 M 是尾数或有效数字E 是指数或阶码R是进制。 尾数和阶码均为带符号数。尾数的符号表示数的正负阶码的符号则表明小数点的实际位置。浮点数的精度由尾数决定数的表示范围由阶码决定。 如二进制小数10011.101按浮点数形式可表示为1.0011101×24。 其中尾数为1.0011101阶码为4。
三、浮点数的存储
浮点数的存储涉及到补码知识参见“负数在计算机内的编码”一文。 补码规则如下
正数补码都是其自身。负数的补码是对应正数取反再1。
此外还涉及到另一个概念移码。 移码就是对补码的符号位取反。假设用4位二进制数表示-1的补码为1111移码为01111的补码为0001移码为1001。 0111在十进制下为71001在十进制下为9相当于给原数加上了823。 速算规律n位二进制数的移码相当于加上2n-1。 在C/C中存放浮点数的变量类型为float和double分别占用32位、64位二进制数其空间的分配规则如下 以float类型数据为例在32位二进制空间中从左往右
符号位最高位为符号位用来表示正负0为正数、1为负数。指数位接下来8位为指数位用来存储浮点数阶码。只是实际存储的数据并非阶码的二进制值而是将阶码先转为移码再减1。也就是说存入的数据为阶码27-1阶码127。尾数位再之后23位用来表示尾数部分纯小数。因为浮点数的尾数都为1.××××所以可将1和小数点都舍去只存储小数点后边的部分。
例如十进制数19.625若以float类型存储计算过程如下 ①浮点数19.625转换为二进制数为10011.101浮点数表示为1.0011101×24。 ②符号位正数所以符号位为0。 ③阶码位阶码为48位二进制对应存储数据为阶码127412713110000011B。 ④尾数位尾数为1.0011101舍去前面的1和小数点只存储后面的0011101。 三个部分合在一起得到19.625在内存中的存储形式如下 0 10000011 00111010000000000000000 若以double类型存储原理不变只是指数位变为11位对应的存储数据为移码1023210-1。 如十进制数2.5若以double类型存储计算过程如下 ①浮点数2.5转换为二进制为10.1浮点表示为1.01×21。 ②符号位正数符号位为0。 ③阶码位阶码为111位指数位的移码偏移为102311023102410000000000B。 ④尾数位尾数为1.01舍去前面的1和小数点存储为01之后50个0。 合在一起得到2.5在内存中的存储形式如下 0 10000000000 01之后50个0