gpt4 book ai didi

c - 循环 C 中 n 位的 2^n 状态,其中 n > 32

转载 作者:行者123 更新时间:2023-11-30 15:51:19 25 4
gpt4 key购买 nike

我想在 C 中对 n 位的所有可能的 2^n 状态进行循环。例如,如果 n=4 我想循环 0000, 0001, 0010, 0011, ..., 1110, 1111。这些位可以用任何方式表示,例如长度为 n 的整数数组,值为 0 或1,或者长度为 n 且值为“0”或“1”等的字符数组,这并不重要。

对于较小的 n,我所做的是使用整数算术计算 x=2^n(n 和 x 都是整数),然后

for(i=0;i<x;i++) {
bits = convert_integer_to_bits( i );
work_on_bits( bits );
}

这里的“bits”是给定的位表示形式,到目前为止有用的是长度为 n 的整数数组,其值为 0 或 1(但可以是其他任何值)。

如果 n>32,即使使用长整型,这种方法显然也不起作用。

我如何使用 n>32?

具体来说,我真的需要计算 2^n 吗?还是有一种棘手的编写循环的方法,它不引用 2^n 的实际值,但仍然迭代 2^n 次?

最佳答案

对于 n > 32,请使用unsigned long long。这适用于 n 最多 64。对于接近 50 的值,您将不得不等待很长时间,直到循环结束。

关于c - 循环 C 中 n 位的 2^n 状态,其中 n > 32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15223465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com