主頁 > 企業開發 > 浮點數相關

浮點數相關

2020-09-13 01:22:06 企業開發

讀了一些 IEEE 754 實作的浮點數運算相關的文章

  • IEEE 754 (IEEE 754-2019)
  • Floating-point arithmetic
  • Significand
  • JavaScript 浮點數陷阱及解法
  • 基礎野:細說浮點數
  • 浮點數的深入分析
  • What is the difference between quiet NaN and signaling NaN?
  • JavaScript 里最大的安全的整數為什么是2的53次方減一?
  • How numbers are encoded in JavaScript
  • IEEE754規范的舍入方案怎么理解呢? - 海楓的回答 - 知乎
  • ECMA 262
  • IEEE 754 浮點數的表示精度探討
  • Lecture Notes on the Status of IEEE Standard 754 for Binary Floating-Point Arithmetic - Kahan
  • What Every Computer Scientist Should Know About Floating-Point Arithmetic
  • 你應該知道的浮點數基礎知識

寫一寫讀后感 (以下如無特殊說明, 所有表達時中使用的符號均為相應英文的首字母;浮點數也專指二進制浮點數; 所有內容基于 IEEE 754-2019)

名稱 radix Significand bits (包括1位隱含的整數位) Decimal digits (精度 = lg2^Significand bits) 指數位 固定偏移值 E min E max
binary16 半精度浮點數 2 1 + 10 = 11 lg2^11 ≈ 3.31 5 2^(5-1) - 1 = 15 -14 = 1 - +15 2^(5-1) - 1 = +15
binary32 單精度浮點數 2 24 7.22 8 127 ?126 +127
binary64 雙精度浮點數 2 53 15.95 11 1023 ?1022 +1023
binary128 四精度浮點數 2 113 34.02 15 16383 ?16382 +16383
binary256 八精度浮點數 2 237 71.34 19 262143 -262142 +262143
                     31
                     |
                     | 30    23 22                    0
                     | |      | |                     |
               type -+-+------+-+---------------------+ value
              特殊值 * 00000000 00000000000000000000000 ±0.0
              
min subnormal number * 00000000 00000000000000000000001 ±2^?23 × 2^?126 = ±2?149 ≈ ±1.4×10^-45
max subnormal number * 00000000 11111111111111111111111 ±(1?2^?23) × 2^?126 ≈ ±1.18×10^-38

   min normal number * 00000001 00000000000000000000000 ±2^?126 ≈ ±1.18×10^-38
                ±1.0 * 01111111 00000000000000000000000 ±1.0
   max normal number * 11111110 11111111111111111111111 ±(2?2^-23) × 2^127 ≈ ±3.4×10^38
 
              特殊值 * 11111111 00000000000000000000000 ±∞
              特殊值 0 11111111 10000000000000000000000 qNaN
              特殊值 0 11111111 01000000000000000000000 sNaN
                -----+-+------+-+---------------------+
                     | |      | |                     |
                     | +------+-+---------------------+
                     |    |    |           |
                     |    |    v           |
                     |    |the implicit bit|
                     |    v                v
                     | exponent         fraction
                     v 
                    sign

32 位單精度浮點數

浮點數存盤結構由三部分組成

  1. s符號位 sign
    • 0 為正
    • 1 為負
  2. e指數位 exponent
    • 指數位 (偏移指數, 也稱階碼) 使用無符號整數表示, 范圍: [0, 2^e - 1] (偏移指數 = 實際指數 + 固定偏移值. 固定偏移值 = 2^(e-1) - 1)
      1. 偏移指數: 0 表示非規約形式的浮點數特殊值 ±0

        1. 如果尾數的小數部分非 0, 表示非規約的浮點數
        2. 如果尾數的小數部分是 0, 表示特殊值 ±0 (和符號位相關)
      2. 偏移指數: (0, 2^(e-1) - 1) 表示負指數

      3. 偏移指數: 2^(e-1) - 1 表示 ±0 指數

      4. 偏移指數: (2^(e-1) - 1, 2^e - 1) 表示正指數

      5. 偏移指數: 2^e - 1 表示特殊值 ±∞特殊值NaN

        1. 如果尾數的小數部分是 0, 表示特殊值 ±∞ (和符號位相關)
        2. 如果尾數的小數部分非 0, 表示特殊值 NaN
          • qNaN (quiet NaN) 尾數的小數部分最高位為 1
            • 將該最高位更改為 0 時, 可能得到特殊值 ±∞ (和符號位相關)
          • sNaN (signaling NaN) 尾數的小數部分最高位為 0
            • 將該最高位更改為 1 時, 得到 qNaN
          • 通常 qNaN 用于使運算正常進行, sNaN 用于引發例外 (是否引發例外取決于 floating-point unit FPU 的狀態), 具體見 qNaN 與 sNaN 的區別
    • 使用偏移指數的優點: 可以用長度為 e 個單位的無符號整數來表示所有的實際指數, 這使得兩個浮點數的指數大小的比較更為容易
  3. m尾數位 mantissa / 有效數 significand (significand 也被叫做 mantissa, 它等于 the implicit bit + fraction)
    • 規約與非規約浮點數
      • 偏移指數: (0, 2^e - 1), 也即 [1, 2^e - 2], 表示規約形式的浮點數. 規約形式的浮點數隱含整數位為 1
      • 偏移指數為 0 且尾數的小數部分非 0, 表示非規約形式的浮點數. 非規約形式的浮點數隱含整數位為 0
      • 非規約形式的浮點數的偏移指數比規約形式的浮點數的偏移指數小 1
        • 例如: 最小規約形式的單精度 (32位 = 1s + 8e + 23f) 浮點數的偏移指數為 1: (-126 + 127), 實際指數為 -126; 而非規約的單精度浮點數的偏移指數為 0: (-126 + 127 - 1), 對應的實際指數也是 -126 而不是 -127
    • 使用隱含整數位的優點: 增加了 1 位浮點數的有效數長度
    • 使用非規約形式的浮點數的優點 (漸進式下溢位 gradual underflow 的優點): 避免了突然式下溢位 abrupt underflow, 使得每個浮點數之間的距離 gap 一致 = 2^(-f + (1 - (2^(e-1) - 1)))

浮點數的特點

  • 只能精確表示可由二進制科學計數法 (-1)^s*m*2^e 表示的數值, m 超出精度的部分自動進一舍零

    這也是 0.1, 1.1 等浮點數無法被精確存盤的原因

    // 以下使用 JavaScript 實作的雙精度浮點數, 精度為 15.95, 約 16 位有效數字
    有效數字是指在一個數中,從該數的第一個非零數字算起的所有數字的長度
    
    (0.1).toPrecision(16);  // "0.1000000000000000" 對于0.1, 有效數為16位
    (0.1).toPrecision(17);  // "0.10000000000000001" 對于0.1, 有效數為17位
    (0.1).toPrecision(18);  // "0.100000000000000006"
    (0.1).toPrecision(22);  // "0.1000000000000000055511"
    
    (1.1).toPrecision(16);  // "1.100000000000000" 對于1.1, 有效數為16位
    (1.1).toPrecision(17);  // "1.1000000000000001" 對于1.1, 有效數為17位
    (1.1).toPrecision(18);  // "1.10000000000000009"
    (1.1).toPrecision(22);  // "1.100000000000000088818"
    
    1.000000000000001;  // 1.000000000000001 有效位數為16位
    1.0000000000000001;  // 1 第17位的1被舍去了
    
  • 規約形式浮點數的最大值: ±(1 + (2^-1 + 2^-2 + ... + 2^-f)) * 2^(2^(e-1) - 1) <=> ±(2 - 2^-f) * 2^(2^(e-1) - 1).

    對于雙精度浮點數來說, 其規約最大值為: ±(2- 2^-52) * 2^1023 === ±1.7976931348623157e+308, 1.7976931348623157e+308 也是 JavaScript 中 Number 物件靜態屬性 MAX_VALUE 的值 (注意它不是一個安全整數), 大于該值即表示 ∞ (Number.MAX_VALUE * 1.000000000000001 === Infinity; Number.MAX_VALUE + 1e+292 === Infinity)

  • 非規約形式浮點數的最小值: ±2^(-f + (1 - (2^(e-1) - 1))).

    對于雙精度浮點數來說, 其非規約最小值為: ±2^(-52-1022) === ±5e-324, 5e-324 也是 JavaScript 中 Number 物件靜態屬性 MIN_VALUE 的值, 小于該值即表示 0

  • 浮點數的安全整數范圍 (安全整數范圍指浮點數與整數可以一對一): [-(2^m - 1), 2^m - 1]. 對于雙精度浮點數來說, 安全整數為: ±2^53 - 1 === ±9007199254740991, 共有 16 位有效數字. 非安全整數的特點是: 一個浮點數對應多個實數, 如下圖所示:

    floating-point numbers 1-n real numbers

    這也是 JavaScript 中 Number 物件靜態屬性 MAX_SAFE_INTEGERMIN_SAFE_INTEGER 的值

    2^53 + 1 用二進制表示為: 1000...0001 (共 54 位, 兩個一分別是 2^53 和 2^0), 轉為二進制科學表示法為: 1.000...0001 * 2^53 (尾數的小數部分共 53 位), 由于雙精度浮點數的尾數最多能保存 52 位二進制, 因此最后的 1 注定被舍去. 2^53 + 12^53 存盤一致, 也即 2^53 === 2^53 + 1, 2^53 不是一個安全整數

  • 浮點數可以準確表示的整數 (除了安全整數范圍內的數), 以雙精度浮點數為例: 由于尾數的小數部分最多只能存盤 52 位, 因此大于浮點數的安全整數范圍并且還要精確表示的整數有兩類

    • 一類是在指數的范圍內增加指數的大小, 且保持尾數始終為 1.0 的數: 2^54, 2^55, 2^56, ..., 2^1023, 這些都是精確的數

    • 另一類是指數與尾數同時更改的數: 對于 [2^53, 2^54) 之間的數, 因為其尾數的小數部分共有 53 位, 第 53 位注定會被舍去, 那我們只要保證數的第 53 位為 0, 那么該數即可精確保證, 也即在 [2^53, 2^54) 之間的偶數才能保證第 53 位為 0, 才能精確表示;

      同理, [2^54, 2^55) 之間的數, 第 53 位和第 54 位注定被舍去, 那我們只要保證數的第 53 位和第 54 位都為 0, 那么該數即可精確保證, 也即在 [2^54, 2^55) 之間, 間距變為 4 的倍數, 這樣才能保證第 53 位和第 54 位都為 0, 才能精確表示, 以此類推

浮點數的比較

  • 浮點數基本上按照符號位, 指數域, 尾數域的順序作比較. 顯然, 所有正數大于負數; 正負號相同時, 指數的二進制表示法更大的其浮點數值更大; 符號位和指數位相同的, 尾數更大的其浮點數值更大

浮點數的五種舍入方式 (對于二進制浮點數來說是四種舍入方式)

  • 舍入到最近的值

    • 舍入到最近的值, roundTiesToEven: 會將結果舍入為最接近且可以表示的值. 如果一樣接近, 選擇最低有效位為偶數的 (尾數的最低位二進制為 0); 如果最低有效位也相同 (比如 10 進制浮點數 9.5, 9 和 1*e^1 的最低有效位都為奇數), 則選擇量級更大的 (對于正數, 越大量級越大; 對于負數, 越小量級越大), 這通常是二進制浮點數的默認舍入方式, 也是十進制浮點數推薦的舍入方式

      // 單精度浮點數(尾數的小數部分23位) Round to nearest, ties to even 示例
      
      // 9.5 表示為二進制科學計數法的浮點數, 舍入一位
      9.5 => 1001.1 => 1.0011 * 2^3
      // 離它最近的兩個數分別為 10 和 9
       10 => 1010   => 1.010 * 2^3
        9 => 1001   => 1.001 * 2^3
      // 10 與 9 離 9.5 的距離分別為
      1.010 * 2^3 - 1.0011 * 2^3 = 0.0001 * 2^3  // 0.1
      1.0011 * 2^3 - 1.001 * 2^3 = 0.0001 * 2^3  // 0.1
      // 距離一樣接近, 比較其最低有效位
      // 1.010 * 2^3 的最低有效位為 even
      // 1.001 * 2^3 的最低有效位為 odd
      // 因此, 9.5 舍入一位后是 10 而不是 9
      
      // 0.95 表示為二進制科學計數法的浮點數, 舍入一位
      0.95 => 0.11 1100 1100 1100 1100 1100 1
      // 離他最近的兩個數分別為 1 和 0.9
         1 => 1.00 0000 0000 0000 0000 0000 0
       0.9 => 0.11 1001 1001 1001 1001 1001 1
      // 1 與 0.9 離 0.95 的距離分別為
      1.00 0000 0000 0000 0000 0000 0 - 0.11 1100 1100 1100 1100 1100 1 = 0.00 0011 0011 0011 0011 0011 1
      0.11 1100 1100 1100 1100 1100 1 - 0.11 1001 1001 1001 1001 1001 1 = 0.00 0011 0011 0011 0011 0011 0
      
      0.00 0011 0011 0011 0011 0011 1 > 0.00 0011 0011 0011 0011 0011 0
      // 0.9 離 0.95 更近一點, 因此 0.95 舍入一位后是 0.9 而不是 1
      
    • 舍入到最近的值, roundTiesToAway: 會將結果舍入為最接近且可以表示的值. 如果一樣接近, 選擇量級更大的 (對于正數, 越大量級越大; 對于負數, 越小量級越大), 二進制浮點數不需要該舍入方式, 而十進制浮點數應該提供該舍入方式供用戶選擇

  • 定向舍入

    • 朝 +∞ 方向舍入, roundTowardPositive, 也稱為向上取整 ceil: 會將結果朝正無窮大的方向舍入
    • 朝 -∞ 方向舍入, roundTowardNegative, 也稱為向下取整 floor: 會將結果朝負無窮大的方向舍入
    • 朝 0 方向舍入, roundTowardZero, 也稱為截斷 truncation: 會將結果朝 0 的方向舍入
  • JavaScript 中 Math.round(x) 靜態方法的舍入方式

    • 回傳最接近 x 的整數. 如果兩個整數相等的接近, 那么回傳更接近 +∞ 的; 如果已經是整數了, 那么回傳它自身

二進制浮點數的例外處理

  • 無效運算, Invalid operation. 數學上未定義的運算, 例如 0/0, sqrt(-1.0) 等, 默認回傳 qNaN
  • 被零除, Division by zero. 除數為零,被除數為有限的非零數字, 默認回傳 ±∞
  • 上溢, Overflow. 運算產生的結果超出指數能表達的范圍 E max, 默認回傳 ±∞
  • 下溢, Underflow. 運算產生的結果超出了規約浮點數 normal numbers 的范圍, 默認回傳非規約浮點數 subnormal numbers 或 0 (遵循舍入規則)
  • 不精確, Inexact. 運算產生的結果無法精確表示, 默認回傳精確結果的舍入值 (遵循舍入規則)

在線轉換 (二進制與十進制) 浮點數的鏈接

  • IEEE-754 Floating Point Converter - Single precision 32-bit
  • IEEE754 Single precision 32-bit
  • IEEE754 Double precision 64-bit

下載標準

  • IEEE 754-2019

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/18362.html

標籤:JavaScript

上一篇:15 張精美動圖全面講解 CORS

下一篇:求基于樣方的三維熱力圖

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more