C语言中位、字节和字的定义 整数类型与浮点数类型的比较

电子说

1.3w人已加入

描述

一、位、字节和字

术语位、字节和字用于描述计算机数据单位或计算机存储单位。这里主要指存储单位。

最小的存储单位称为位(bit)。它可以容纳两个值(0或1)之一(或者可以称该位被置为“关”或“开”),不能在一个位中存储更多的信息,但是计算机中包含数量极其众多的位。位是计算机存储的基本单位。

字节(byte)是常用的计算机存储单位。几乎对于所有的机器,1个字节均为8位。这是字节的标准定义,至少在衡量存储单位时是这样(C语言中对此有不同的定义)。由于每个位或者是0或者是1,所以一个8位的字节包含256(2的8次方)种可能的0、1组合。这些组合可用于表示0到255的整数或者一组字符。这种表示可以通过二进制编码(仅使用0或1方便地表示数字)来实现。

对于一种给定的计算机设计,字(word)是自然的存储单位。对于8位微机,比如原始的Apple机,一个字正好有8位。使用80286处理器的早期IBM兼容机是16位机,这意味着一个字的大小为16位。基于Pentium的PC机和Macintosh PowerPC中的字是32位。现在普遍的计算机是64位,但更强大的计算机还可以有更长位数的字。

二、整数类型与浮点数类型

对于人,整数和浮点数的区别在于它们的书写。对于计算机,区别在于它们的存储方式。下面分别对它们进行介绍。

1、整数

整数(integer)就是没有小数部分的数。在C中,小数点永远不会出现在整数的书写中。例如1、-23和4561都是整数。数3.14、0.77和8.000都不是整数。整数以二进制数字存储。例如整数9的二进制表示为1001,在8位的字节中存储它需要将前4位置0,后4位为1001,即00001001。

2、浮点数

浮点数(floating-point)差不多可以和数学中的实数(real number)概念相对应。实数包含了整数之间的那些数。1.75、2.16E7、3.00和4e-8都是浮点数。注意,加了小数点的数是浮点型值,所以3是整数类型,而3.00是浮点型。书写浮点数有多种形式。2.16E7表示2.16乘以10的7次方(即1后面带有7个0),7称为10的指数。

这里最重要的一点是浮点数与整数的存储方案不同。浮点数表示法将一个数分为小数部分和指数部分并分别存储。因此尽管7.00和整数7有相同的值,但它们的存储方式不同。与机器中的二进制存储方式相似,在十进制中5.0可表示为0.5E1,这里的0.5是小数部分,1是指数部分。当然,计算机的内部存储使用二进制数字,它使用2的幂而非10的幂。

这里我们先只关注这两种类型在应用中的区别:

①整数没有小数部分;浮点数可以有小数部分

②浮点数可以表示比整数范围大得多的数

③对于一些算术运算(例如两个很大的数相减),使用浮点数会损失更多的精度

④因为在任何区间内(比如1.0和2.0之间)都存在无穷多个实数,所以计算机浮点数不能表示区域内所有的值。浮点数往往只是实际值的近似。例如,7.0可能以浮点值6.99999存储。

⑤浮点运算通常比整数运算慢。不过,已经开发出了专门处理浮点运算的微处理器,它可以缩小速度上的差别。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分