都是C 定点操作确定性的
Are all C++ fixed-point operations deterministic?
我正在在C 中写一个小的RTS引擎,并想使用锁定同步。
作为浮点确定论,我什至无法希望实现,我必须使用固定点数学。
确定性(在不同的编译器和CPU上)如何在未定义的未签名INT上进行操作?
我对分裂特别感兴趣,因为这会发生舍入。
基本整数类型的大小在不同的平台上有所不同。您可以使用uint32_t
和类似类型避免此问题。
签名的整数溢出是未定义的行为,尽管溢出对于未签名的积分类型已明确定义(您执行算术模型2^N
)。即便如此,您仍然必须提防,因为模块化算术通常不是您要做的。
我相信,标准曾经是一段时间的距离,这完全是如何舍入的(尽管我不确定"正/正面"是否曾经打开)。但是我认为这现在已经标准化了,即使不是,朝0几乎是普遍的。
但是您可以使用numeric_limits
检查。如果可以相信此文档,则该标准确实可以保证朝零舍入。
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 重载操作程序时出错>>用于类中的字符串 memebr
- 对字符串进行位操作
- 我可以在 C++ 中的函数体之外进行操作吗?
- MPI突然停止了对多个核心的操作
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 对字符数组中的元素执行逐位操作
- 如何在directx/c++中进行平移/缩放操作
- 逐位操作的隐式类型转换
- 为什么一个向量上的多线程操作很慢
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- C++编译器中有哪些非确定性的例子?
- 位移操作和位掩码未检测到重复字符
- 如何进行特定的位操作?
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 字符串操作 - 字符计数
- 此代码中的操作流程是什么?C/C++.
- 复制和交换习惯用法与移动操作之间的交互
- 像union_这样的 Boost.Geometry 操作如何处理浮点类型的基本不精确性?
- 都是C 定点操作确定性的