关于位旋转的介绍性参考?

计算科学 参考请求 随机数生成
2021-12-25 07:10:25

我正在寻找介绍 C 语言的介绍性资源(网页、书籍章节、文章),并立即关注位旋转函数(例如按位 XOR、AND、移位),当然还有分支和循环,但是很少讨论大型程序结构(例如头文件)、指针或复杂的数据结构。或者,对位序列的低级操作进行一般的非 C 介绍会很有用。这个想法是向某人介绍操作位串的算法逻辑,而无需他们学习编程。我最终可能会自己写这样的东西,但我认为可能已经存在更好的版本。欢迎大家提出意见。

(如果这个问题不适合 scicomp.SE,请随意说出来,我相信投票或接近投票会让我知道。在这种情况下,我会删除该帖子。我认为没有另一个 SE 网站那是合适的——我看过——但这不是你的问题。:-)

为什么

我是一名科学哲学家,正在从事一个项目,该项目使用关于伪随机数生成算法的文献中的想法来论证科学哲学中的某些结论。有时这些算法以数学方式呈现,或者通过非编码人员可以理解的其他方法呈现。但是,有关 PRNG 的文章通常使用 C 或 C 启发的伪代码来介绍算法(例如:Mersenne Twister 论文)。这类代码中使用的 C 子集通常非常有限。根据我的经验,它通常不会大量使用指针或结构或其他一些 C 简介可能希望学生尽早学习的东西。

我希望能够将其他对形式逻辑和数学感到满意的科学哲学家和科学家发送到 C 语言的介绍性资源中,其中包含位旋转函数。这些人对形式表示很满意,但不是编码人员,并且可能不太了解数字在硬件中是如何表示和处理的。但是,您不必成为程序员就可以将 PRNG 算法的描述理解为一种古怪的形式逻辑语言(即 C 的子集)中的表示,用于操作位序列,即布尔值。我认为 PRNG 文献中的一些想法会引起一些科学哲学家和不是编码人员的科学家的兴趣,我想帮助他们克服认为他们可以做到的驼峰。

1个回答

位旋转有时用作适合该站点的数值算法的一部分(例如,快速傅立叶变换的硬件实现、量子计算机的模拟等)。

想到的一些资源:

  1. DE Knuth,计算机编程的艺术。卷。4A。组合算法。

  2. H. Warren,Hacker 的喜悦。

  3. https://web.archive.org/web/20191008012414/http://home.pipeline.com/~hbaker1/hakmem/hakmem.html