整数余数和除法的运行时复杂度中出现的输入大小是多少?
What's the input size that appears in the runtime complexity of integer remainder and division?
我正在尝试计算现代计算机中整数的余数和除法的运行时复杂度。无论使用何种算法,我经常发现输入大小被定义为用于存储被除整数的位数。我发现这个定义是模棱两可的。假设其中一个被除的数是 10:它可以用 4 位存储。但是,从程序员的角度来看,如果 10 存储在 int 类型的变量中,并且在所使用的编程语言中,int 用 32 位表示,则 10 将使用 32 位存储。在上述示例中,哪个值表示运行时复杂度中出现的输入大小? 4 位还是 32 位?
In the aforementioned example, which value represents the input size that appears in the runtime complexity? 4 bits or 32 bits?
输入大小是执行运算的 ALU 占用的位数(或更具体地说,ALU 内的算法在多少位上运行)——它完全取决于 CPU 体系结构和您或您的编译器生成的代码。
从技术上讲,没有什么能阻止您设计具有 32 位寄存器和 8 位 ALU 的 CPU,它只能接受寄存器的最低 8 位作为其输入(当然,这样的 CPU 会让人完全无法忍受,但这是完全可能的)。如果有多个 ALU,比如 8 位和 64 位,假设指令集架构授予您这样的自由,没有什么可以阻止您或编译器使用您喜欢的任何一个。
不可能对您的问题给出一个通用的答案,因为它与任何特定的实现无关。
我正在尝试计算现代计算机中整数的余数和除法的运行时复杂度。无论使用何种算法,我经常发现输入大小被定义为用于存储被除整数的位数。我发现这个定义是模棱两可的。假设其中一个被除的数是 10:它可以用 4 位存储。但是,从程序员的角度来看,如果 10 存储在 int 类型的变量中,并且在所使用的编程语言中,int 用 32 位表示,则 10 将使用 32 位存储。在上述示例中,哪个值表示运行时复杂度中出现的输入大小? 4 位还是 32 位?
In the aforementioned example, which value represents the input size that appears in the runtime complexity? 4 bits or 32 bits?
输入大小是执行运算的 ALU 占用的位数(或更具体地说,ALU 内的算法在多少位上运行)——它完全取决于 CPU 体系结构和您或您的编译器生成的代码。
从技术上讲,没有什么能阻止您设计具有 32 位寄存器和 8 位 ALU 的 CPU,它只能接受寄存器的最低 8 位作为其输入(当然,这样的 CPU 会让人完全无法忍受,但这是完全可能的)。如果有多个 ALU,比如 8 位和 64 位,假设指令集架构授予您这样的自由,没有什么可以阻止您或编译器使用您喜欢的任何一个。
不可能对您的问题给出一个通用的答案,因为它与任何特定的实现无关。