欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言深入探索浮點數(shù)的使用秘密

 更新時間:2022年04月20日 16:23:47   作者:清風自在?流水潺潺  
在C語言中,浮點數(shù)是一個很重要的類型,浮點數(shù)可以使數(shù)據(jù)更為精確。浮點數(shù)說白了就是帶有小數(shù)點的數(shù)。比如1.6?0.0000?765.2等等,浮點數(shù)具體是怎么用的呢,讓我們一起來看看

一、內存中的浮點數(shù)

浮點數(shù)在內存的存儲方式為:符號位,指數(shù),尾數(shù)

類型符號位指數(shù)尾數(shù)
float1位(第31位)8位(第23--30位)23位(第0--22位)
double1位(第63位)11位(第52--62位)52位(第0--51位)

注:float 與 double 類型的數(shù)據(jù)在計算機內部的表示法是相同的,但由于所占存儲空間的不同,其分別能夠表示的數(shù)值范圍和精度不同。

二、浮點數(shù)存儲實例

浮點數(shù)的轉換

  • 將浮點數(shù)轉換成二進制
  • 用科學計數(shù)法表示二進制浮點數(shù)
  • 計算指數(shù)偏移后的值

注意:計算指數(shù)時需要加上偏移量,而偏移量的值與類型有關。

示例:對于指數(shù)6,偏移后的值如下:

float:127 + 6 -> 133

double:1023 + 6-> 1029

實數(shù) 8.25 的在內存中的 float 表示

8.25的二進制表示:1000.01 -> 1.00001 * (2 ^ 3)

  • 符號位:0
  • 指數(shù):127 + 3 -> 130 10000010
  • 小數(shù):00001

內存中 8.25 的 float 表示:

  • 0 10000010 00001000000000000000000 -> 0x41040000

下面看一下 8.25 是不是在內存中表示為 0x41040000 吧:

#include <stdio.h>
 
int main()
{
    float f = 8.25;
    unsigned int* p = (unsigned int*)&f;
    printf("0x%08X\n", *p);
    return 0;
}

下面為輸出結果:

三、浮點類型的秘密

首先看一下 int 類型和 float 類型的范圍:

int 類型的范圍:[-2 ^ 31,2 ^ 31 - 1]

float 類型的范圍:[-3.4 * 10 ^ 38,3.4 * 10 ^ 38]

這就出現(xiàn)一個問題:int 和 float 都占4個字節(jié)的內存,為什么 float 卻比 int 的范圍大得多呢?

解釋如下:

  • float 能表示的具體數(shù)字的個數(shù)與 int 相同
  • float 可表示的數(shù)字之間不是連續(xù)的,存在間隙
  • float 只是一種近似的表示法,不能作為精確數(shù)使用
  • 由于內存表示法相對復雜,float 的運算速度比 int 慢得多

注意:double 與 float 具有相同的內存表示法,因此 double 也是不精確的。由于 double 占用的內存較多,所能表示的精度比 float 高。

下面看一段 float 類型的不精確示例代碼:

#include <stdio.h>
 
int main()
{
    float f = 3.1415f;
    float fl = 123456789;
    printf("%0.10f\n", f);
    printf("%0.10f\n", fl);
    return 0;
}

下面為輸出結果:

這個示例就是表示 f 和 fl 小數(shù)點的后 10 位,結果表明,float 只是一種近似的表示法,不能作為精確數(shù)使用以及float 可表示的數(shù)字之間不是連續(xù)的,存在間隙。

四、小結

  • 浮點類型與整數(shù)類型的內存表示法不同
  • 浮點類型的內存表示更復雜
  • 浮點類型可表示的范圍更大
  • 浮點類型是一種不精確的類型
  • 浮點類型的運算速度較慢

到此這篇關于C語言深入探索浮點數(shù)的使用秘密的文章就介紹到這了,更多相關C語言浮點數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++11 thread多線程編程創(chuàng)建方式

    C++11 thread多線程編程創(chuàng)建方式

    這篇文章主要介紹了C++11 thread多線程編程的相關知識,包括線程的創(chuàng)建方式結束方式及互斥鎖的實例代碼詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C語言實現(xiàn)短字符串壓縮的三種方法詳解

    C語言實現(xiàn)短字符串壓縮的三種方法詳解

    這篇文章主要和大家分享一下smaz,shoco,unisox2三種短字符串壓縮算法,并分別探索它們各自的壓縮率與壓縮和解壓縮性能,需要的可以參考一下
    2022-08-08
  • c語言動態(tài)數(shù)組示例

    c語言動態(tài)數(shù)組示例

    這是一個簡單的動態(tài)分配數(shù)組大小的例子,需要的朋友可以參考下
    2014-04-04
  • C語言三個函數(shù)的模擬實現(xiàn)詳解

    C語言三個函數(shù)的模擬實現(xiàn)詳解

    這篇文章主要為大家詳細介紹了C語言三個函數(shù)的模擬實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++中set/multiset容器詳解(附測試用例與結果圖)

    C++中set/multiset容器詳解(附測試用例與結果圖)

    set/multiset屬于關聯(lián)式容器,底層結構是用二叉樹實現(xiàn),下面這篇文章主要給大家介紹了關于C++中set/multiset容器的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • C++文件依存關系介紹

    C++文件依存關系介紹

    如果現(xiàn)在你做的C++項目(課題)包含的文件沒有超過1000個,你可以選擇略過此文,不過建議繼續(xù)瀏覽
    2013-01-01
  • 一文帶你了解C++中queue的使用

    一文帶你了解C++中queue的使用

    C++中的queue是一種容器,用于在FIFO(先進先出)原則下存儲和管理元素。本篇文章將深入探討C++中的queue,包括它的定義、使用、原理和示例,感興趣的可以了解一下
    2023-04-04
  • VC6.0代碼自動提示 VC6.0在win7環(huán)境下代碼提示智能化

    VC6.0代碼自動提示 VC6.0在win7環(huán)境下代碼提示智能化

    作為程序猿的你,是否已經喜歡或習慣依賴IDE開發(fā)環(huán)境呢,有了IDE環(huán)境,即使你想不起方法全名,只要知道某個前綴,或哪怕在提示列表中,一一查詢,也可以找到自己想找的方法或屬性
    2013-01-01
  • 基于C語言編寫簡易的英文統(tǒng)計和加密系統(tǒng)

    基于C語言編寫簡易的英文統(tǒng)計和加密系統(tǒng)

    這篇文章主要介紹如何基于C語言編寫一個簡易的英文統(tǒng)計和加密系統(tǒng),實際上就是對字符數(shù)組的基本操作的各種使用,感興趣的可以了解一下
    2023-05-05
  • C++實現(xiàn)雙向鏈表

    C++實現(xiàn)雙向鏈表

    這篇文章主要為大家詳細介紹了C++實現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評論