计算机组成原理笔记(六)——2.2机器数的定点表示和浮点表示
计算机在进行算术运算时,需要指出小数点的位置,根据小数点的位置是否固定,在计算机中有两种数据格式:定点表示和浮点表示。
2.2.1定点表示法
一、基本概念
定点表示法是一种小数点的位置固定不变的数据表示方式,用于表示整数或小数。根据小数点位置的不同,分为 定点整数 和 定点小数。
二、定点小数(纯小数)
1. 格式定义
- 小数点位置:固定在符号位之后(隐含),数值部分的最高有效位之前。
- 机器字长:包含1位符号位 + n位数值位
示例:8位定点小数(符号位1位 + 数值位7位)
格式:Xs . X1 X2 X3 X4 X5 X6 X7
(Xs为符号位)
2. 表示范围
- 原码定点小数:
范围 : − ( 1 − 2 − n ) ≤ X ≤ 1 − 2 − n 范围: -(1 - 2^{-n}) \leq X \leq 1 - 2^{-n} 范围:−(1−2−n)≤X≤1−2−n - 补码定点小数:
范围 : − 1 ≤ X ≤ 1 − 2 − n 范围: -1 \leq X \leq 1 - 2^{-n} 范围:−1≤X≤1−2−n
示例:8位定点小数(n=7)
类型 | 最大正数 | 最小正数 | 最大负数(原码) | 最大负数(补码) |
---|---|---|---|---|
数值 | 0.1111111 (0.992) | 0.0000001 (0.0078) | -0.1111111 (-0.992) | -1.0000000 (-1.0) |
三、定点整数(纯整数)
1. 格式定义
- 小数点位置:固定在数值部分的最低位之后(隐含)。
- 机器字长:包含1位符号位 + n位数值位,格式如下:
示例:8位定点整数(符号位1位 + 数值位7位)
格式:Xs X1 X2 X3 X4 X5 X6 X7 .
(Xs为符号位)
2. 表示范围
- 原码定点整数:
范围 : − ( 2 n − 1 ) ≤ X ≤ 2 n − 1 范围: -(2^{n} - 1) \leq X \leq 2^{n} - 1 范围:−(2n−1)≤X≤2n−1 - 补码定点整数:
范围 : − 2 n ≤ X ≤ 2 n − 1 范围: -2^{n} \leq X \leq 2^{n} - 1 范围:−2n≤X≤2n−1
示例:8位定点整数(n=7)
类型 | 最大正数 | 最小正数 | 最大负数(原码) | 最大负数(补码) |
---|---|---|---|---|
数值 | 01111111 (127) | 00000001 (1) | 11111111 (-127) | 10000000 (-128) |
四、关键特性对比
特性 | 定点小数 | 定点整数 |
---|---|---|
精度 | 由小数点后的位数决定 | 由整数位的位数决定 |
溢出处理 | 结果超出范围时需调整比例因子 | 结果超出范围直接溢出 |
应用场景 | 低精度科学计算 | 普通整数运算 |
五、溢出检测与处理
- 原码溢出规则:符号位与数值位不匹配时溢出。
- 补码溢出规则:次高位进位与符号位加减不一致时溢出。
六、典型例题
例1:将十进制数-0.75用8位定点小数补码表示。
解:
- 转为二进制:-0.75 = -0.1100₂
- 补码表示:符号位1,数值位取反+1 →
1.0100000
例2:计算定点整数00101101₂
的原码真值(字长8位)。
解:
- 符号位0(正数)→ 数值部分为
0101101₂ = 45
→ 真值:+45
总结
- 优点:硬件实现简单,适合低精度运算。
- 缺点:表示范围有限,高精度场景需浮点数。
- 现代应用:广泛用于整数运算(如内存地址、计数器)。
2.2.2浮点表示法
浮点数用于表示实数,其核心特点是 小数点位置可浮动,允许在极大或极小的数值范围内保持有效精度。
一、浮点数基本组成
浮点数格式为:
N = M × r E N = M \times r^E N=M×rE
- 符号位(1位):0表示正数,1表示负数。
- 阶码(即指数):用移码或补码表示,决定数值范围。
- 尾数:用原码或补码表示的纯小数,决定精度。
- 基数(通常为2):隐含存储,不占实际位数。
示例结构(IEEE 754单精度):
二、规格化浮点数
为提高精度,尾数需满足:
1 2 ≤ ∣ M ∣ < 1 \frac{1}{2} \leq |M| < 1 21≤∣M∣<1
即 最高有效位必须为1(基数=2时)。例如:
- 合法规格化:0.1xxx…(二进制)
- 非法规格化:0.01xx…(需左移调整为0.1xx…)
规格化操作:
- 尾数左移一位,阶码减1(基数2时)。
三、IEEE 754标准详解
类型 | 符号位 | 阶码位数 | 尾数位数 | 偏移量 | 精度(十进制) |
---|---|---|---|---|---|
单精度 | 1 | 8 | 23 | 127 | ~7位 |
双精度 | 1 | 11 | 52 | 1023 | ~15位 |
扩展双精度 | 1 | 15 | 64 | 16383 | ~19位 |
存储格式示意(单精度):
特殊值处理:
- 0:阶码全0,尾数全0。
- 无穷大:阶码全1,尾数全0(符号位决定正负)。
- NaN:阶码全1,尾数非0。
四、浮点数表示范围
值类型 | 计算公式(单精度) | 说明 |
---|---|---|
最大正数 | ( 2 − 2 − 23 ) × 2 127 (2−2^{−23}) \times 2^{127} (2−2−23)×2127 | 阶码最大,尾数全1 |
最小正数 | 2 − 126 × 2 − 23 2^{−126} \times 2^{−23} 2−126×2−23 | 非规格化数 |
最小规格化正数 | 2 − 126 2^{−126} 2−126 | 阶码最小,尾数全0 |
最大负数 | − ( 2 − 126 ) -(2^{−126}) −(2−126) | 符号位为1,阶码最小 |
范围与精度对比(单精度 vs 双精度):
五、浮点数运算步骤
- 对阶:小阶向大阶对齐,右移尾数并增加阶码差值。
- 尾数运算:执行加减法(需处理符号位)。
- 规格化:调整尾数为合法形式。
- 舍入:按就近舍入(或截断)处理多余位。
- 溢出判断:检查阶码是否超出允许范围。
六、典型问题示例
例1:转换十进制数178.125为IEEE 754单精度
- 二进制转换:178.125 = 10110010.001
- 规格化:1.0110010001×2⁷
- 阶码 = 127+7 = 134(移码:10000110)
- 尾数 = 0110010001…(隐含前导1,截断到23位)
存储结果:
0 10000110 01100100010000000000000
例2:分析0.1 + 0.2 ≠ 0.3
- 本质:0.1和0.2在二进制下是无限循环小数,存储时为近似值。
- 单精度近似误差:
- 0.1存储值 ≈ 0.100000001490116
- 0.2存储值 ≈ 0.200000002980232
- 两者之和 ≈ 0.300000004470348(≠精确0.3)
七、总结
- 浮点优势:动态范围大,适合科学计算。
- 精度局限:无法精确表示所有实数,金融计算需用定点数。
2.2.3浮点数阶码的移码表示法
在浮点数表示中,阶码(指数部分)的编码方式通常采用移码(也称为偏移码、增码),主要目的是简化浮点数的比较与运算逻辑。
1. 移码的基本概念
**移码(Bias Encoding)**是一种将真值映射到无符号整数范围的编码方法。对于n位的阶码,其移码值为:
[ X ] 移 = X + 2 n − 1 − 1 [X]_{移} = X + 2^{n-1} - 1 [X]移=X+2n−1−1
其中,偏移量(Bias)为 ( 2^{n-1} - 1 \),例如:
- 8位阶码的Bias为127( 2 7 − 1 2^7 -1 27−1);
- 11位阶码(双精度)的Bias为1023( 2 10 − 1 2^{10} -1 210−1)
2. 移码的计算规则
假设阶码真值为 E E E,n位移码的转换步骤如下:
- 计算偏移量: Bias = 2 n − 1 − 1 \text{Bias} = 2^{n-1} -1 Bias=2n−1−1;
- 真值 E E E 加上Bias,转换为无符号整数;
- 将结果表示为n位二进制。
示例:对于4位阶码(Bias E = 3 E=3 E=3:
[ E ] 移 = 3 + 7 = 10 → 101 0 2 [E]_{移} = 3 + 7 = 10 \rightarrow 1010_2 [E]移=3+7=10→10102
3. 移码的关键特性
-
自然排序性
移码的真值按二进制自然顺序排列,无需考虑符号位,便于硬件直接比较阶码大小。 -
唯一零表示
真值0的移码为Bias( 7 7 7,示例为4位)。消除±0歧义,便于判断强制零值(阶码全0)。 -
与补码的关系
移码与补码的符号位相反,数值位相同。如:
补码: [ E ] 补 = 1101 ( E = − 3 ) 移码: [ E ] 移 = 0101 ( E = − 3 + 7 = 4 ) \text{补码:} [E]_{补}=1101 \ (E=-3) \\ \text{移码:} [E]_{移}=0101 \ (E=-3+7=4) 补码:[E]补=1101 (E=−3)移码:[E]移=0101 (E=−3+7=4)
4. 移码在浮点数中的优势
-
简化对阶操作
在浮点加减运算中,对阶时可直接比较移码的大小,无需处理符号位,加速硬件电路设计。 -
唯一零标准
IEEE 754规定,阶码全0且尾数全0表示机器零,保证零的唯一性。 -
避免溢出错判
阶码全1(如单精度255)表示无穷大或NaN,提供异常处理机制。
5. 实例分析
以8位移码(Bias E = − 5 E=-5 E=−5 转换为移码:
[ E ] 移 = − 5 + 127 = 122 → 0111101 0 2 [E]_{移} = -5 + 127 = 122 \rightarrow 01111010_2 [E]移=−5+127=122→011110102
6. 移码转换流程图
7. 移码与IEEE 754标准
在IEEE 754单精度浮点数中:
- 阶码位:8位(Bias E 真值 ∈ [ − 126 , 127 ] E_{真值} \in [-126, 127] E真值∈[−126,127];
- 特殊值:
- 全0(Bias):表示零或非规格化数;
- 全1(255):表示无穷大(∞)或非数(NaN)。
8. 总结
移码通过映射真值到无符号数域,简化浮点数运算中的阶码比较,同时保证了零的唯一表示和异常值的清晰界限,是浮点数设计的核心机制之一。需重点理解偏移量计算及与补码的转换关系。
2.2.4浮点数尾数的基数
浮点数尾数的基数(r,即底数)对浮点数的特性有重要影响。
一、尾数基数的定义
在浮点数表示法中,尾数基数r是阶码的底,与尾数的基数相同。常见取值有2、4、8、16等。公式表示为:
N = M × r E N = M \times r^E N=M×rE
其中:
- E为阶码(纯整数,常用移码或补码)
- M为尾数(纯小数,常用原码或补码)
二、基数r对浮点数特性的影响
1. 表示范围
- 阶码位数(k)和基数r的关系
阶码幅度范围: − 2 k ≤ E ≤ 2 k − 1 -2^k ≤ E ≤ 2^k-1 −2k≤E≤2k−1
实际范围: r − 2 k ≤ ∣ N ∣ ≤ r 2 k r^{-2^k} ≤ |N| ≤ r^{2^k} r−2k≤∣N∣≤r2k
r增大时,同一阶码位数下表示范围呈指数级扩大(如r=4时范围比r=2大得多)。
2. 有效精度
- 尾数位数(n)与基数r的关系
实际精度位数: n ′ = n / ⌈ l o g 2 r ⌉ n' = n / \lceil log_2 r \rceil n′=n/⌈log2r⌉
示例:当r 23 / log 2 16 = 5.75 23/\log_2 16 = 5.75 23/log216=5.75),精度降低。
3. 数值分布密度
-
r越大,数轴上分布越稀疏
如r=16时相邻数值的间隔比r=2大,导致密度下降。
4. 规格化操作
- 基数影响规格化移位的位数
- 当r=2:每次左移1位 → 阶码减1
- 当r=4:每次需左移2位 → 阶码减1
示例:原码尾数0.00101(r=2)需左移3次成为规格化数,而r=4只需左移1次。
5. 运算效率
- r增大可减少移位次数
如r=16时,对阶或规格化右移次数更少,提高运算速度。
6. 机器实现复杂度
- 大基数需要更复杂的硬件支持
例如,IBM370短浮点采用r=16,而PDP-11使用r=2。
三、典型基数对比(32位浮点示例)
参数 | r=2 | r=16 |
---|---|---|
规格化范围 | ±(1-2-23)×2127 | ±(1-2-23)×16127 |
最小正数 | 2-1×2-128 ≈1e-38 | 16-1×16-128 ≈1e-51 |
尾数有效二进制位数 | 24位(含隐含1) | 5.75位(精度显著降低) |
分布密度 | 高 | 低 |
四、基数选择策略
- 大型/巨型机
选较大r(如16),优先扩大范围,兼顾速度(减少移位)。 - 微型/嵌入式系统
选r=2,保证精度需求,适应有限硬件资源。
不同基数下的规格化过程对比
此图说明了不同基数下左移操作对阶码的影响差异。例如,二进制(r=2)需逐位移位,而四进制(r=4)每一次移位处理两位,大幅减少调整次数。
五、总结
尾数基数r的选择需要权衡范围、精度和效率:
- 优点:r↑ → 范围扩大,运算速度↑
- 缺点:r↑ → 精度↓,分布密度↓
理解不同基数的影响有助于在体系结构设计中做出合理选择。例如,科学计算侧重范围(选大r),而财务计算需要高精度(应选r=2)。
2.2.5IEEE754标准浮点数
一、IEEE 754标准概述
IEEE 754是计算机科学中浮点数表示的国际标准,主要用于规范浮点数的格式、运算规则及特殊数值的处理。其核心思想是通过符号位、阶码(指数)、尾数( mantissa) 三部分表示浮点数,并通过规格化和非规格化方式优化精度与范围。
二、浮点数格式结构
以32位单精度浮点数为例,结构如下:
符号位(1位) | 阶码(8位,移码表示) | 尾数(23位,原码表示) |
---|---|---|
S | E | M |
- 符号位(S):0表示正数,1表示负数。
- 阶码(E):移码表示,偏置值为 2 m − 1 − 1 2^{m-1}-1 2m−1−1(m为阶码位数)。
- 单精度偏置值: 127 = 2 8 − 1 127 = 2^8 - 1 127=28−1
- 双精度偏置值: 1023 = 2 11 − 1 1023 = 2^{11} - 1 1023=211−1
- 尾数(M):原码表示,规格化数最高位隐含1(不存储),非规格化数最高位为0。
三、规格化数与非规格化数
-
规格化数
- 形式: ± 1. x x x x × 2 E \pm 1.xxxx \times 2^E ±1.xxxx×2E
- 隐含位:尾数最高位1被隐藏,实际有效位数为24位(单精度)/53位(双精度)。
- 用途:表示大部分正常数值,通过隐藏位提高精度。
-
非规格化数
- 形式: ± 0. x x x x × 2 E \pm 0.xxxx \times 2^E ±0.xxxx×2E
- 特点:阶码全0,尾数非0,无隐含位。
- 用途:表示接近0的极小数,解决下溢问题。
四、特殊情况
数值类型 | 阶码全0 | 尾数全0 | 其他情况 |
---|---|---|---|
+0/-0 | 是 | 是 | 符号位决定正负 |
±∞ | 是 | 否 | 阶码全1,尾数任意 |
NaN(非数) | 是/否 | 否 | 阶码全1,尾数非0 |
五、浮点数运算步骤
以加法为例,分为5步:
-
对阶
- 目的:统一阶码,对齐小数点。
- 方法:小阶码向大阶码看齐,尾数右移(基数为2),阶码加1。
- 示例: x = 0.11 1 2 × 2 2 111 x = 0.111_2 \times 2^{111}_2 x=0.1112×22111, y = 0.10 1 2 × 2 2 101 y = 0.101_2 \times 2^{101}_2 y=0.1012×22101
→ y y y右移2位,阶码变为 2 2 111 2^{111}_2 22111。
-
尾数求和
- 按定点数加法规则运算,考虑进位/借位。
-
规格化
- 左规:结果形如 0.0...01 x . . . 0.0...01x... 0.0...01x...,尾数左移1位,阶码减1。
- 右规:结果形如 1. x . . . x 1.x...x 1.x...x,尾数右移1位,阶码加1(丢失最高位时舍入)。
-
舍入
- 四种方式:就近舍入(默认)、正向舍入、负向舍入、截断。
- 示例:尾数 0.00010000... 0.00010000... 0.00010000... → 近似为 0.0001 0.0001 0.0001(截断)或 0.0001 0.0001 0.0001(四舍五入)。
-
溢出判断
- 上溢:正阶码超过最大值(如单精度 > 127 > 127 >127)。
- 下溢:负阶码低于最小值(如单精度 < − 126 < -126 <−126),结果为0。
六、不同精度浮点数对比
类型 | 位数 | 符号位 | 阶码位 | 尾数位(显式) | 总位数 | 偏置值 | 用途 |
---|---|---|---|---|---|---|---|
单精度(float) | 32 | 1 | 8 | 23 | 32 | 127 | 广泛应用,精度较低 |
双精度(double) | 64 | 1 | 11 | 52 | 64 | 1023 | 科学计算,高精度 |
临时浮点数 | 64 | 1 | 15 | 64 | 64 | 16383 | 扩展精度,无隐含位 |
七、实例解析
例1:十进制0.15625转IEEE 754单精度
- 二进制: 0.0010 1 2 = 1.01 × 2 − 3 0.00101_2 = 1.01 \times 2^{-3} 0.001012=1.01×2−3。
- 阶码: E = 127 + ( − 3 ) = 124 → 0111110 0 2 E = 127 + (-3) = 124 \rightarrow 01111100_2 E=127+(−3)=124→011111002。
- 尾数:隐含1后为 101 101 101,填充20个0 → `001010000000000000000
2.2.6定点、浮点表示法与定点、浮点计算机
一、定点与浮点表示法
计算机中处理实数时,有两种基本的数据表示方法:定点表示法和浮点表示法。
1. 定点表示法
-
定义:小数点位置固定,分为 定点小数 和 定点整数。
-
结构:
- 定点小数(纯小数):
- 格式:符号位 + 小数部分,小数点隐含在符号位后。
- 例:
0.101101
(原码)或1.101101
(补码)。
- 定点整数(纯整数):
- 格式:符号位 + 整数部分,小数点隐含在末尾。
- 例:
0 101101
(原码)或1 101101
(补码)。
- 定点小数(纯小数):
-
表示范围:
类型 原码范围 补码范围 定点小数 − ( 1 − 2 − n ) ∼ ( 1 − 2 − n ) -(1 - 2^{-n}) \sim (1 - 2^{-n}) −(1−2−n)∼(1−2−n) − 1 ∼ ( 1 − 2 − n ) -1 \sim (1 - 2^{-n}) −1∼(1−2−n) 定点整数 − ( 2 n − 1 ) ∼ ( 2 n − 1 ) -(2^{n} - 1) \sim (2^{n} - 1) −(2n−1)∼(2n−1) − 2 n ∼ ( 2 n − 1 ) -2^{n} \sim (2^{n} - 1) −2n∼(2n−1)
2. 浮点表示法
-
定义:小数点位置根据阶码(指数) 浮动,格式: N = ( − 1 ) S × M × r E N = (-1)^S \times M \times r^E N=(−1)S×M×rE,其中 S S S 是符号位, M M M 是尾数, E E E 是阶码。
-
IEEE 754 标准:
-
规格化与非规格化:
- 规格化数:尾数首位隐含为 1(例如
1.1011 × 2^5
)。 - 非规格化数:阶码全 0,用于表示接近 0 的数。
- 规格化数:尾数首位隐含为 1(例如
3. 定点与浮点对比
特性 | 定点表示法 | 浮点表示法 |
---|---|---|
表示范围 | 小 | 大 |
精度 | 固定(有限小数位数) | 可变(牺牲部分精度) |
运算复杂度 | 简单(仅整数运算) | 复杂(需对阶、规格化) |
溢出处理 | 数值超范围直接溢出 | 阶码超范围才会溢出 |
二、定点计算机与浮点计算机
1. 定点计算机
-
特点:
- 只能处理定点数,无硬件浮点运算单元。
- 浮点运算由软件模拟,效率低。
- 适用于嵌入式系统或低功耗场景。
-
结构:
2. 浮点计算机
- 特点:
- 含浮点运算部件(FPU),支持硬件浮点指令。
- 直接处理浮点数的加减乘除,效率高。
- 适用于科学计算、图形处理。
- 结构:
三、定点与浮点的选择
- 定点机适用场景:
- 实时控制(如工业仪表)。
- 需要高精度整数运算(如财务系统)。
- 浮点机适用场景:
- 大规模数值计算(如气象模拟)。
- 需要大范围动态数值(如图形渲染)。
四、IEEE 754 浮点运算的注意事项
- 精度问题:
- 浮点数无法精确表示某些十进制小数(如
0.1 + 0.2 ≈ 0.30000000000000004
)。
- 浮点数无法精确表示某些十进制小数(如
- 规格化要求:
- 运算后需判断是否溢出,并进行左规或右规。
相关文章:
计算机组成原理笔记(六)——2.2机器数的定点表示和浮点表示
计算机在进行算术运算时,需要指出小数点的位置,根据小数点的位置是否固定,在计算机中有两种数据格式:定点表示和浮点表示。 2.2.1定点表示法 一、基本概念 定点表示法是一种小数点的位置固定不变的数据表示方式,用于表示整数或…...
将树莓派5当做Ollama服务器,C#调用generate的API的示例
其实完全没这个必要,性能用脚后跟想都会很差。但基于上一篇文章的成果,来都来了就先简单试试吧。 先来看看这个拼夕夕上五百多块钱能达到的效果: 只要对速度没要求,那感觉就还行。 Ollama默认只在本地回环(127.0.0…...
MYSQL数据库(一)
一.数据库的操作 1.显示数据库 show databases; 2.创建数据库 create database 数据库名; 3.使用数据库 use 数据库名; 4.删除数据库 drop database 数据库名; drop database if exists 数据库名; 二.表的操作 1.显示所有表 show tables; 2.查看表结构 des…...
Python Cookbook-4.15 字典的一键多值
任务 需要一个字典,能够将每个键映射到多个值上。 解决方案 正常情况下,字典是一对一映射的,但要实现一对多映射也不难,换句话说,即一个键对应多个值。你有两个可选方案,但具体要看你怎么看待键的多个对…...
IDEA 终端 vs CMD:为什么 java -version 显示的 JDK 版本不一致?
前言:离谱的 JDK 版本问题 今天遇到了一个让人抓狂的现象:在 Windows 的 CMD 里输入 java -version 和在 IntelliJ IDEA 终端输入 java -version,居然显示了不同的 JDK 版本! 本以为是环境变量、缓存或者 IDEA 设置的问题&#x…...
Flask登录页面后点击按钮在远程CentOS上自动执行一条命令
templates文件夹和app.py在同一目录下。 templates文件夹下包括2个文件:index.html login.html app.py代码如下: import os import time from flask import Flask, render_template, request, redirect, session, make_response import mysql.con…...
深度解析:文件夹变白色文件的数据恢复之道
在数字化时代,数据的重要性不言而喻。然而,当我们在使用计算机时,偶尔会遇到一些棘手的问题,其中“文件夹变白色文件”便是一个令人困惑且亟待解决的难题。这一现象不仅影响了文件的正常访问,更可能隐藏着数据丢失的风…...
【Matlab】-- 基于MATLAB的飞蛾扑火算法与反向传播算法的混凝土强度预测
文章目录 文章目录 01 内容概要02 MFO-BP模型03 部分代码04 运行结果05 参考文献06 代码下载 01 内容概要 本资料介绍了一种基于飞蛾扑火算法(Moth Flame Optimization, MFO)与反向传播算法(Backpropagation, BP)的混凝土强度预…...
【Python实例学习笔记】图像相似度计算--哈希算法
【Python实例学习笔记】图像相似度计算--哈希算法 一、哈希算法的实现步骤:二、对每一步都进行注解的代码 一、哈希算法的实现步骤: 1、缩小尺寸: 将图像缩小到8*8的尺寸,总共64个像素。这一步的作用是去除图像的细节,…...
2025DevSecOps标杆案例|智能制造国际领导厂商敏捷安全工具链实践
某智能制造国际领导厂商是涵盖智能家居、楼宇科技,工业技术、机器人与自动化和数字化创新业务五大业务板块为一体的全球化科技集团,连续入选《财富》世界500强,每年为全球超过4亿用户、各领域的重要客户与战略合作伙伴提供产品和服务。 数智化…...
【YOLOv11】目标检测任务-实操过程
目录 一、torch环境安装1.1 创建虚拟环境1.2 启动虚拟环境1.3 安装pytorch1.4 验证cuda是否可用 二、yolo模型推理2.1 下载yolo模型2.2 创建模型推理文件2.3 推理结果保存路径 三、labelimg数据标注3.1 安装labelimg3.2 解决浮点数报错3.3 labelimg UI界面介绍3.4 数据标注案例…...
第十七章:Python数据可视化工工具-Pyecharts库
一、Pyecharts简介 资源绑定附上完整资源供读者参考学习! Pyecharts是一个基于百度开源可视化库ECharts的Python数据可视化工具,支持生成交互式的HTML格式图表。相较于Matplotlib等静态图表库,Pyecharts具有以下优势: 丰富的图表…...
解决【vite-plugin-top-level-await】 插件导致的 Bindings Not Found 错误
解决【vite-plugin-top-level-await】 插件导致的 Bindings Not Found 错误 环境设置 操作系统: macOS硬件平台: M1 Pro前端框架: Vue 3Node.js 版本: 20 在使用 Vue 项目时,我们尝试集成 vite-plugin-top-level-await 插件以支持顶层 await 语法。然而ÿ…...
《八大排序算法》
相关概念 排序:使一串记录,按照其中某个或某些关键字的大小,递增或递减的排列起来。稳定性:它描述了在排序过程中,相等元素的相对顺序是否保持不变。假设在待排序的序列中,有两个元素a和b,它们…...
六十天前端强化训练之第三十七天之Docker 容器化部署实战指南(大师级详解)
欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、Docker 核心知识体系 1.1 容器革命:改变开发方式的技术 1.2 Docker 三剑客 1.3 Docker 生命周期管理 1.4 关键命令详解 二、前端容器化实战案例ÿ…...
RabbitMQ--延迟队列事务消息分发
目录 1.延迟队列 1.1应用场景 1.2利用TTL死信队列模拟延迟队列存在的问题 1.3延迟队列插件 1.4常见面试题 2.事务 2.1配置事务管理器 3.消息分发 3.1概念 3.2应用场景 3.2.1限流 3.2.2负载均衡 1.延迟队列 延迟队列(Delayed Queue),即消息被发送以后, 并…...
列表,元组,字典,集合,之间的嵌套关系
在 Python 中,列表、元组、字典和集合的嵌套关系需要遵循各自的特性(如可变性、可哈希性)。以下是它们之间的嵌套规则、示例和典型应用场景的详细梳理: 1. 列表(List)的嵌套 特性: 可变、有序…...
【行驶证识别】批量咕嘎OCR识别行驶证照片复印件图片里的文字信息保存表格或改名字,基于QT和腾讯云api_ocr的实现方式
项目背景 在许多业务场景中,如物流管理、车辆租赁、保险理赔等,常常需要处理大量的行驶证照片复印件。手动录入行驶证上的文字信息,像车主姓名、车辆型号、车牌号码等,不仅效率低下,还容易出现人为错误。借助 OCR(光学字符识别)技术,能够自动识别行驶证图片中的文字信…...
鸿蒙HarmonyOS NEXT设备升级应用数据迁移流程
数据迁移是什么 什么是数据迁移,对用户来讲就是本地数据的迁移,终端设备从HarmonyOS 3.1 Release API 9及之前版本(单框架)迁移到HarmonyOS NEXT(双框架)后保证本地数据不丢失。例如,我在某APP…...
MCP从零开始
MCP简介 MCP,全称是Model Context Protocol,模型上下文协议,由Claude母公司Anthropic于去年11月正式提出。MCP解决的最大痛点就是Agent开发中调用外部工具的技术门槛过高的问题。 能调用外部工具,是大模型进化为智能体Agent的关…...
Three.js 快速入门教程【十九】CSS2DRenderer(CSS2D渲染器)介绍,实现场景中物体或设备标注标签信息
系列文章目录 Three.js 快速入门教程【一】开启你的 3D Web 开发之旅 Three.js 快速入门教程【二】透视投影相机 Three.js 快速入门教程【三】渲染器 Three.js 快速入门教程【四】三维坐标系 Three.js 快速入门教程【五】动画渲染循环 Three.js 快速入门教程【六】相机控件 Or…...
横扫SQL面试——连续性登录问题
横扫SQL面试 📌 连续性登录问题 在互联网公司的SQL面试中,连续性问题堪称“必考之王”。💻🔍 用户连续登录7天送优惠券🌟,服务器连续报警3次触发熔断⚠️,图书馆连续3天人流破百开启限流⚡” …...
爱因斯坦求和 torch
目录 向量点积 矩阵乘法 矩阵转置 向量转换相机坐标系 在 Python 的科学计算库(如 NumPy)中,einsum 是一个强大的函数,它可以简洁地表示各种张量运算。下面是几个不同类型的使用示例: 向量点积 向量点积是两个向量…...
Spring Initializr搭建spring boot项目
介绍 Spring Initializr 是一个用于快速生成 Spring Boot 项目结构的工具。它为开发者提供了一种便捷的方式,可以从预先定义的模板中创建一个新的 Spring Boot 应用程序,从而节省了从头开始设置项目的大量时间。 使用 Spring Initializr,你…...
【实战】渗透测试下的文件操作
目录 Linux查找文件 Windows查找文件 查找可写目录 windows Linux 创建 Windows Linux 压缩 解压 远程解压文件 Linux查找文件 >find / -name index.php 查找木马文件 >find . -name *.php | xargs grep -n eval( >find . -name *.php | xargs grep -n ass…...
MATLAB 控制系统设计与仿真 - 30
用极点配置设计伺服系统 方法2-反馈修正 如果我们想只用前馈校正输入,从而达到伺服控制的效果,我们需要很精确的知道系统的参数模型,否则系统输出仍然具有较大的静态误差。 但是如果我们在误差比较器和系统的前馈通道之间插入一个积分器&a…...
P1091 [NOIP 2004 提高组] 合唱队形
题目链接: 思路: 题目意思,找出最少的同学出列,保证学生 1-t 上升, t-n 下降。我们只要求出每个点的最长上升子序列和最长不上升子序列,然后总人数-最长上升子序列和最长不上升子序列1,就是最少…...
小林coding-12道Spring面试题
1.说一下你对 Spring 的理解?spring的核心思想说说你的理解? 2.Spring IoC和AOP 介绍一下?Spring的aop介绍一下?IOC和AOP是通过什么机制来实现的?怎么理解SpringIoc?依赖倒置,依赖注入,控制反转分别是什么?依赖注…...
通过Spring Boot集成WebSocket进行消息通信
文章目录 通过Spring Boot集成WebSocket进行消息通信1. 创建 Spring Boot 项目2. 添加 WebSocket 依赖3. 配置 WebSocket4. 创建 WebSocket 处理器5. 创建控制器(可选)6. 前端页面测试7. 运行项目注意事项 通过Spring Boot集成WebSocket进行消息通信 1.…...
ComfyUI发展全景:从AI绘画新星到多功能创意平台的崛起
在人工智能技术迅猛发展的浪潮中,ComfyUI作为基于Stable Diffusion的开源工具,已经从最初的AI绘画辅助软件成长为支持多模态创作的强大平台。本文将全面梳理ComfyUI的发展历程、技术特点、应用场景及其在AIGC生态中的独特地位,同时展望这一工…...
11-项目涉及设备的问题
我们部门在开发一些项目时,确实需要借用设备,但每次开发新需求时都要从硬件部门借设备,开发完成后又要归还。这种频繁的借还流程不仅增加了沟通成本,还导致项目负责人和开发人员对设备的功能和应用场景缺乏直观的了解。有时甚至连…...
将 Markdown 表格结构转换为Excel 文件
在数据管理和文档编写过程中,我们经常使用 Markdown 来记录表格数据。然而,Markdown 格式的表格在实际应用中不如 Excel 方便,特别是需要进一步处理数据时。因此,我们开发了一个使用 wxPython 的 GUI 工具,将 Markdown…...
C++学习之Linux文件编译、调试及库制作
目录 1.rwx对于文件和目录的区别 2.gcc编译过程 3.数据段合并和地址回填说明 4.gcc编译其他参数 5.函数库简介 6.静态库的使用 7.动态库的简介 8.动态库制作基本流程 9.启动APP错误解决方案12 10.启动APP错误解决方案34 11.makefile一组规则 12.makefile的两个函数 …...
neo4j中导入csv格式的三元组数据
csv数据格式: head_entity,relation,tail_entity 02.02类以外的脂肪乳化制品,包括混合的和(或)调味的脂肪乳化制品,允许添加,β-胡萝卜素 02.02类以外的脂肪乳化制品,包括混合的和(或)调味的脂…...
高项第十六章——项目采购管理
什么是采购管理?项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。 项目采购管理包括编制和管理协议所需的管理和控制过程。 16_1 管理基础 什么是协议?协议是用于明确项目初步意向的任何文件或沟通结果,协议的范…...
架构师面试(二十二):TCP 协议
问题 今天我们聊一个非常常见的面试题目,不管前端还是后端,也不管做的是上层业务还是底层框架,更不管技术方向是运维还是架构,都可以思考和参与一下哈! TCP协议无处不在,我们知道 TCP 是基于连接的端到端…...
五.ubuntu20.04 - ffmpeg推拉流以及Nginx、SRS本地部署
一.本地部署nginx 1.编译ffmpeg,参考这位博主的,编译选项有的enable找不到的不需要的可以直接删除,但是像sdl(包含ffplay)、h264、h265这些需要提前下载好,里面都有下载指令。 Ubuntu20.04 编译安装 FFmp…...
JS 手撕题高频考点
前端面试中,JS 手撕题是高频考点,主要考察 编程能力、算法思维、JS 核心知识。以下是最常见的手撕题分类 代码示例: 目录 📌 1. 手写函数柯里化📌 2. 手写 debounce(防抖)📌 3. 手写…...
Hyperlane框架临时上下文数据管理:提升Web开发效率的利器
Hyperlane框架临时上下文数据管理:提升Web开发效率的利器 在现代Web开发中,临时上下文数据管理是实现高效请求处理的关键。Hyperlane框架通过创新的临时上下文存储机制,为开发者提供了一套简洁、安全的解决方案,让数据在请求生命…...
QT操作PDF文件
Qt 早期本身不提供原生的 PDF 操作功能。从 Qt 5.15 开始,Qt 提供了 PDF 模块,可以显示和提取 PDF 内容。Qt中有如下几种方式实现 PDF 文件的生成、读取和操作。 1、使用 QPrinter 生成 PDF 2、使用 Qt PDF 模块 (Qt 5.15+) 3、使用第三方库(比如:Poppler) 一、使用 Q…...
【算法手记8】NC95 数组中的最长连续子序列 字母收集
🦄个人主页:修修修也 🎏所属专栏:刷题 ⚙️操作环境:牛客网 目录 一.NC95 数组中的最长连续子序列 题目详情: 题目思路: 解题代码: 二.字母收集 题目详情: 题目思路: 解题代码: 结语 一.NC95 数组中的最长连续子序列 牛客网题目链接(点击即可跳转):NC95 …...
AI渗透测试:网络安全的“黑魔法”还是“白魔法”?
引言:AI渗透测试,安全圈的“新魔法师” 想象一下,你是个网络安全新手,手里攥着一堆工具,正准备硬着头皮上阵。这时,AI蹦出来,拍着胸脯说:“别慌,我3秒扫完漏洞࿰…...
使用perf工具分析Linux系统的性能瓶颈
想获取更多高质量的Java技术文章?欢迎访问Java技术小馆官网,持续更新优质内容,助力技术成长 Java技术小馆官网https://www.yuque.com/jtostring 使用perf工具分析Linux系统的性能瓶颈 在现代计算系统中,性能瓶颈是一个经常遇到…...
知识就是力量——HELLO GAME WORD!
你好!游戏世界! 简介环境配置前期准备好文章介绍创建头像小功能组件安装本地中文字库HSV颜色空间音频生成空白的音频 游戏UI开发加载动画注册登录界面UI界面第一版第二版 第一个游戏(贪吃蛇)第二个游戏(俄罗斯方块&…...
LeetCode算法题(Go语言实现)_20
题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中: answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。 answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组成…...
ES拼音分词自动补全实现
#测试拼音分词 POST /_analyze { "text":"如家酒店真不错", "analyzer": "pinyin" } #这里把拼音的首字母放到这里,也说明了这句话没有被分词,而是作为一个整体出现的 #还把每一个字都形成了一个拼音&#…...
Spring Boot 日志 配置 SLF4J 和 Logback
文章目录 一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback 一、前言 在开发 Java 应用时,日志记录是不可或缺的一部分。日志可以记录应用的运行状态、错误信息和调试信息,帮助开发者…...
构建大语言模型应用:数据准备(第二部分)
本专栏通过检索增强生成(RAG)应用的视角来学习大语言模型(LLM)。 本系列文章 简介数据准备(本文)句子转换器向量数据库搜索与检索大语言模型开源检索增强生成评估大语言模型服务高级检索增强生成 RAG 如上…...
mac m 芯片 动态切换 jdk 版本jdk8.jdk11.jdk17
下载 jdk 版本. 默认安装路径在. /Library/Java/JavaVirtualMachines配置环境变量 # 动态获取所有 JDK 路径 export JAVA_8_HOME$(/usr/libexec/java_home -v 1.8) export JAVA_11_HOME$(/usr/libexec/java_home -v 11) export JAVA_17_HOME$(/usr/libexec/java_home -v 17)#…...
如何通过python将视频转换为字符视频
请欣赏另类的老鼠舞 字符老鼠舞 与原版对比 对比 实现过程 1. 安装库 pip install numpy pip install Pillow pip install opencv-python pip install moviepy 2. 读取视频帧并转换为灰度图 import cv2def make_video(input_video_path, output_video_path):video_cap cv2…...