Arithmetic
64 位整数除法运算。提供无符号和有符号 64 位数的除法接口(÷32 位或 64 位除数),返回商和余数。在 32 位处理器上 64 位除法无硬件指令支持,需软件模拟——OSAL 封装了不同平台下最高效的实现。
头文件清单
接口清单
接口名称 功能简述 osal_div_u64 无符号64位整数除以无符号32位整数,返回商 osal_div_s64 有符号64位整数除以有符号32位整数,返回商 osal_div64_u64 无符号64位整数除以无符号64位整数,返回商 osal_div64_s64 有符号64位整数除以有符号64位整数,返回商 osal_div_u64_rem 无符号64位整数除以无符号32位整数,返回余数 osal_div_s64_rem 有符号64位整数除以有符号32位整数,返回余数 osal_div64_u64_rem 无符号64位整数除以无符号64位整数,返回余数 osal_get_random_int 生成随机数
Functions
osal_div_u64
头文件清单
功能说明
- 实现无符号64位整数除以无符号32位整数的除法运算
- 返回被除数除以除数的商
- 调用者须确保除数不为零,否则行为未定义
前置条件
- 除数 divisor 不为 0
- 支持 linux、liteos 系统
入参
名称 参数类型 详细说明 约束取值范围 dividend unsigned long long 无符号64位被除数 0 ~ 18446744073709551615 divisor unsigned int 无符号32位除数 1 ~ 4294967295
返回值
- 返回类型:unsigned long long
返回值 文字含义 触发场景 unsigned long long dividend / divisor 的商 除数非零时正常返回
osal_div_s64
头文件清单
功能说明
- 实现有符号64位整数除以有符号32位整数的除法运算
- 返回被除数除以除数的商
- 调用者须确保除数不为零,否则行为未定义
前置条件
- 除数 divisor 不为 0
- 支持 linux、liteos 系统
入参
名称 参数类型 详细说明 约束取值范围 dividend long long 有符号64位被除数 -9223372036854775808 ~ 9223372036854775807 divisor int 有符号32位除数 -2147483648 ~ -1 或 1 ~ 2147483647
返回值
- 返回类型:long long
返回值 文字含义 触发场景 long long dividend / divisor 的商 除数非零时正常返回
osal_div64_u64
头文件清单
功能说明
- 实现无符号64位整数除以无符号64位整数的除法运算
- 返回被除数除以除数的商
- 调用者须确保除数不为零,否则行为未定义
前置条件
- 除数 divisor 不为 0
- 支持 linux、liteos 系统
入参
名称 参数类型 详细说明 约束取值范围 dividend unsigned long long 无符号64位被除数 0 ~ 18446744073709551615 divisor unsigned long long 无符号64位除数 1 ~ 18446744073709551615
返回值
- 返回类型:unsigned long long
返回值 文字含义 触发场景 unsigned long long dividend / divisor 的商 除数非零时正常返回
osal_div64_s64
头文件清单
功能说明
- 实现有符号64位整数除以有符号64位整数的除法运算
- 返回被除数除以除数的商
- 调用者须确保除数不为零,否则行为未定义
前置条件
- 除数 divisor 不为 0
- 支持 linux、liteos 系统
入参
名称 参数类型 详细说明 约束取值范围 dividend long long 有符号64位被除数 -9223372036854775808 ~ 9223372036854775807 divisor long long 有符号64位除数 -9223372036854775808 ~ -1 或 1 ~ 9223372036854775807
返回值
- 返回类型:long long
返回值 文字含义 触发场景 long long dividend / divisor 的商 除数非零时正常返回
osal_div_u64_rem
头文件清单
功能说明
- 实现无符号64位整数除以无符号32位整数的除法运算,返回余数
- 返回被除数除以除数的余数
- 调用者须确保除数不为零,否则行为未定义
前置条件
- 除数 divisor 不为 0
- 支持 linux、liteos 系统
入参
名称 参数类型 详细说明 约束取值范围 dividend unsigned long long 无符号64位被除数 0 ~ 18446744073709551615 divisor unsigned int 无符号32位除数 1 ~ 4294967295
返回值
- 返回类型:unsigned long long
返回值 文字含义 触发场景 unsigned long long dividend / divisor 的余数 除数非零时正常返回
osal_div_s64_rem
头文件清单
功能说明
- 实现有符号64位整数除以有符号32位整数的除法运算,返回余数
- 返回被除数除以除数的余数
- 调用者须确保除数不为零,否则行为未定义
前置条件
- 除数 divisor 不为 0
- 支持 linux、liteos 系统
入参
名称 参数类型 详细说明 约束取值范围 dividend long long 有符号64位被除数 -9223372036854775808 ~ 9223372036854775807 divisor int 有符号32位除数 -2147483648 ~ -1 或 1 ~ 2147483647
返回值
- 返回类型:long long
返回值 文字含义 触发场景 long long dividend / divisor 的余数 除数非零时正常返回
osal_div64_u64_rem
头文件清单
功能说明
- 实现无符号64位整数除以无符号64位整数的除法运算,返回余数
- 返回被除数除以除数的余数
- 调用者须确保除数不为零,否则行为未定义
前置条件
- 除数 divisor 不为 0
- 支持 linux、liteos 系统
入参
名称 参数类型 详细说明 约束取值范围 dividend unsigned long long 无符号64位被除数 0 ~ 18446744073709551615 divisor unsigned long long 无符号64位除数 1 ~ 18446744073709551615
返回值
- 返回类型:unsigned long long
返回值 文字含义 触发场景 unsigned long long dividend / divisor 的余数 除数非零时正常返回
osal_get_random_int
头文件清单
功能说明
- 生成无符号32位随机数
- 返回随机数值
- 支持 linux、liteos 系统
前置条件
- 支持 linux、liteos 系统
返回值
- 返回类型:unsigned int
返回值 文字含义 触发场景 unsigned int 随机数 正常调用
Type definitions
osal_max
#define osal_max(x, y) \
({ \
__typeof__(x)_max1 = (x); \
__typeof__(y)_max2 = (y); \
(void)(&_max1 == &_max2); \
_max1 > _max2 ? _max1 : _max2; \
})
使用说明:用于取两个值中的较大值,x 与 y 须为同类型表达式
osal_min
#define osal_min(x, y) \
({ \
__typeof__(x)_min1 = (x); \
__typeof__(y)_min2 = (y); \
(void)(&_min1 == &_min2); \
_min1 < _min2 ? _min1 : _min2; \
})
使用说明:用于取两个值中的较小值,x 与 y 须为同类型表达式
osal_abs
#define osal_abs(x) \
({ \
long ret; \
if (sizeof(x) == sizeof(long)) { \
long __x = (x); \
ret = (__x < 0) ? (-__x) : (__x); \
} else { \
int __x = (x); \
ret = (__x < 0) ? (-__x) : (__x); \
} \
ret; \
})
使用说明:用于取绝对值,返回 long 类型结果