Hello 算法 1.0.0b4 C#版实际上,这是因为浮点数 float 采用了不同的表示方式。根据 IEEE 754 标准,32‑bit 长度的 float 由以下 部分构成: ‧ 符号位 S :占 1 bit 。 ‧ 指数位 E :占 8 bits 。 ‧ 分数位 N :占 24 bits ,其中 23 位显式存储。 设 32‑bit 二进制数的第 ? 位为 ?? ,则 float 值的计算方法定义为: val = (−1)?31 × 现在我们可以回答最初的问题:float 的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 位用于表示数字,数 字是均匀分布的;而由于指数位的存在,浮点数 float 的数 的数值越大,相邻两个数字之间的差值就会趋向越 大。 进一步地,指数位 ? = 0 和 ? = 255 具有特殊含义,用于表示零、无穷大、NaN 等。 指数位 E 分数位 N = 0 分数位 N ≠ 0 计算公式 0 ±0 次正规数 (−1)S × 2−126 × (0.N) 1, 2, … , 254 正规数 正规数 (−1)S × 2(E−127) × (1.N) 255 ±∞ NaN0 码力 | 341 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 C#版… ?2?1?0 根据 IEEE 754 标准,32‑bit 长度的 float 由以下三个部分构成。 ‧ 符号位 S :占 1 位,对应 ?31 。 ‧ 指数位 E :占 8 位,对应 ?30?29 … ?23 。 ‧ 分数位 N :占 23 位,对应 ?22?21 … ?0 。 二进制数 float 对应值的计算方法为: val = (−1)?31 × 2(?30?29…?23)2−127 现在我们可以回答最初的问题:float 的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的 的数值越大,相邻两个数字之间的差值就会趋向越 大。 如表 3‑2 所示,指数位 E = 0 和 E = 255 具有特殊含义,用于表示零、无穷大、NaN 等。 表 3‑2 指数位含义 指数位 E 分数位 N = 0 分数位 N ≠ 0 计算公式 0 ±0 次正规数 (−1)S × 2−126 × (0.N) 1, 2, … , 254 正规数 正规数 (−1)S × 2(E−127) ×0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C# 版… ?2?1?0 根据 IEEE 754 标准,32‑bit 长度的 float 由以下三个部分构成。 ‧ 符号位 S :占 1 位,对应 ?31 。 ‧ 指数位 E :占 8 位,对应 ?30?29 … ?23 。 ‧ 分数位 N :占 23 位,对应 ?22?21 … ?0 。 二进制数 float 对应值的计算方法为: val = (−1)?31 × 2(?30?29…?23)2−127 现在我们可以回答最初的问题:float 的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的 的数值越大,相邻两个数字之间的差值就会趋向越 大。 如表 3‑2 所示,指数位 E = 0 和 E = 255 具有特殊含义,用于表示零、无穷大、NaN 等。 表 3‑2 指数位含义 指数位 E 分数位 N = 0 分数位 N ≠ 0 计算公式 0 ±0 次正规数 (−1)S × 2−126 × (0.N) 1, 2, … , 254 正规数 正规数 (−1)S × 2(E−127) ×0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.0.0b5 C#版1?0 根据 IEEE 754 标准,32‑bit 长度的 float 由以下三个部分构成。 ‧ 符号位 S :占 1 bit ,对应 ?31 。 ‧ 指数位 E :占 8 bits ,对应 ?30?29 … ?23 。 ‧ 分数位 N :占 23 bits ,对应 ?22?21 … ?0 。 二进制数 float 对应的值的计算方法: val = (−1)?31 × 2(?30?29… 现在我们可以回答最初的问题:float 的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 位用于表示数字,数 字是均匀分布的;而由于指数位的存在,浮点数 float 的数 的数值越大,相邻两个数字之间的差值就会趋向越 大。 如表 3‑2 所示,指数位 ? = 0 和 ? = 255 具有特殊含义,用于表示零、无穷大、NaN 等。 表 3‑2 指数位含义 指数位 E 分数位 N = 0 分数位 N ≠ 0 计算公式 0 ±0 次正规数 (−1)S × 2−126 × (0.N) 1, 2, … , 254 正规数 正规数 (−1)S × 2(E−127) × (10 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 C#版… ?2?1?0 根据 IEEE 754 标准,32‑bit 长度的 float 由以下三个部分构成。 ‧ 符号位 S :占 1 位,对应 ?31 。 ‧ 指数位 E :占 8 位,对应 ?30?29 … ?23 。 ‧ 分数位 N :占 23 位,对应 ?22?21 … ?0 。 二进制数 float 对应值的计算方法为: val = (−1)?31 × 2(?30?29…?23)2−127 现在我们可以回答最初的问题:float 的表示方式包含指数位,导致其取值范围远大于 int 。根据以上计算, float 可表示的最大正数为 2254−127 × (2 − 2−23) ≈ 3.4 × 1038 ,切换符号位便可得到最小负数。 尽管浮点数 float 扩展了取值范围,但其副作用是牺牲了精度。整数类型 int 将全部 32 比特用于表示数字, 数字是均匀分布的;而由于指数位的存在,浮点数 float 的 的数值越大,相邻两个数字之间的差值就会趋向越 大。 如表 3‑2 所示,指数位 ? = 0 和 ? = 255 具有特殊含义,用于表示零、无穷大、NaN 等。 表 3‑2 指数位含义 指数位 E 分数位 N = 0 分数位 N ≠ 0 计算公式 0 ±0 次正规数 (−1)S × 2−126 × (0.N) 1, 2, … , 254 正规数 正规数 (−1)S × 2(E−127) ×0 码力 | 376 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 C# 版,即 ? 為短板、? 為長板。 第 15 章 貪婪 www.hello‑algo.com 353 圖 15‑8 初始狀態 如圖 15‑9 所示,若此時將長板 ? 向短板 ? 靠近,則容量一定變小。 這是因為在移動長板 ? 後,寬度 ? − ? 肯定變小;而高度由短板決定,因此高度只可能不變(? 仍為短板)或 變小(移動後的 ? 成為短板)。 圖 15‑9 向內移動長板後的狀態 反向思考,我們只有向內收縮短板 指標相遇。 圖 15‑11 展示了貪婪策略的執行過程。 1. 初始狀態下,指標 ? 和 ? 分列陣列兩端。 2. 計算當前狀態的容量 ???[?, ?] ,並更新最大容量。 3. 比較板 ? 和板 ? 的高度,並將短板向內移動一格。 4. 迴圈執行第 2. 步和第 3. 步,直至 ? 和 ? 相遇時結束。 第 15 章 貪婪 www.hello‑algo.com 355 圖 15‑11 ht) { // 初始化 i, j,使其分列陣列兩端 int i = 0, j = ht.Length - 1; // 初始最大容量為 0 int res = 0; // 迴圈貪婪選擇,直至兩板相遇 第 15 章 貪婪 www.hello‑algo.com 356 while (i < j) { // 更新最大容量 int cap = Math.Min(ht[i], ht[j]) *0 码力 | 379 页 | 18.79 MB | 10 月前3
共 6 条
- 1













