什么是浮子?

时间:2011-04-11 23:34:41

标签: integer floating-point

是的,本世纪的noob问题......但是说实话,我实际上并不知道浮点值究竟是什么......更重要的是,浮点数和整数之间的差异。

提前致谢!

7 个答案:

答案 0 :(得分:12)

基本上,浮点数据类型是一种以科学计数法存储数值的方法。您可能会编写2.3789 x 10 ^ 12,但由于计算机使用二进制文件,因此它是一种二进制科学符号。

浮点值,用软件表示绝对精度的交易量值(你只有很多位可以传播)。

整数是......好吧..整数。最右边(低位)表示2 ^ 0(例如,1),下一位表示2 ^ 1(2s),下一个2 ^ 2(4)等等。最左边(高位)位表示符号(0表示正数,1表示负数)。这带来了负值:它们用所谓的二进制补码表示。得到正数的两个补码:

  • 翻转所有位:零成为1,1成为零。
  • 在结果中添加1,执行所有常规操作。

所以8位正1(二进制,00000001)被转换为负面表示(11111111)

  1. 00000001原始值。
  2. 11111110翻转位
  3. 11111111添加1
  4. 二进制补码表示法的优点是加法和减法使用相同的电路:通过加法实现减法:使用上面的+ 1 / -1示例,得到零:添加最右边的位给出二进制10(十进制2) )。将其带到下一列,重复添加。进位通过符号位传播出来,最终值为00000000。

    曾经有过使用其他表示形式的系统,但大多数(如果不是全部)现代计算机都使用二进制补码表示法。

    然后,当然,有位序(big-endian v。little-endian),但这是另一个故事。

答案 1 :(得分:3)

我想扩展Nicholas Carey在答案中提到的一些内容:

  

浮点值,用软件表示绝对精度的交易量值(你只有很多位可以传播)。

这就是我们称它们为“浮点数”的原因 - 我们允许小数点“浮动”,具体取决于我们想写的数字有多大。

让我们用十进制表示法给出一个例子。假设您有5个单元格来记下一个数字:_ _ _ _ _。如果不使用小数点,则可以表示0到99999之间的数字。但是,您可以表示的最小差异为1.

现在您决定需要记下美元金额,以便从左侧添加两位数的小数点:_ _ _。 _ _这称为fixed point arithmetic。现在你只能写0到999.99之间的数字,但现在你可以表示1美分或0.01的差异

如果您想将此计划用于小额日常开支和所得税,该怎么办?您可以允许小数点“浮动”并使用其中一个数字表示它的位置:[_] _ _ _ _

例如,您的银行利息可能是[3] 4 7 6 5代表4.765,您的杂货账单可能是[2] 5 9 8 2(59.82),您的租金1 8 7 5 9( 875.9)和您的所得税申报表[0] 2 3 8 9(2389)。您甚至可以允许小数点冒险在数字之外,如下所示:[ - 1] 4 5 9 8代表4598x10 = 45,980。

请注意,您现在可以代表非常小和非常大的数字,但您无法准确表示所有数字。例如,在写作[0] 2389时,我们放弃了分数。

更常见的是用科学记数法来思考浮点数,如4.598x10 ^ 4,其中'4.598'称为有效数,'4'是指数,'10'是基数。其他人提到的链接有更详细的实际存储格式。

答案 2 :(得分:2)

在这种情况下,维基百科是你最好的朋友:

虽然您应该从data types overview

开始

此外,数据类型的实现因语言和处理器体系结构而异(例如,整数在不同体系结构上的位数不同),但如果使用C作为正典(C是系统编程的事实标准,并且被认为是“仅仅” - 就抽象方面的汇编语言而言,那么这些资源应该更具启发性:

答案 3 :(得分:0)

基本用语:

浮点值是一个允许有小数点的实数。

整数值没有小数点(如果你愿意,可以是整数)

答案 4 :(得分:0)

让我谷歌这个给你!

http://en.wikipedia.org/wiki/Primitive_data_type#Floating-point_numbers

对于专业人士和初学者来说非常有趣!享受。

答案 5 :(得分:0)

答案 6 :(得分:0)

float是一种数据类型。

http://en.wikipedia.org/wiki/Floating_point