相关疑难解决方法(0)

如何用8个bool值创建一个字节(反之亦然)?

我有8个bool变量,我想将它们"合并"成一个字节.

有一个简单/首选的方法来做到这一点?

相反,如何将一个字节解码为8个独立的布尔值?

我认为这不是一个不合理的问题,但由于我无法通过谷歌找到相关文档,它可能是另一个"非你所有直觉都是错误的"案例.

c++ boolean bit-manipulation bit-packing

20
推荐指数
4
解决办法
2万
查看次数

将二进制转换为十进制的最快方法?

我有四个无符号的32位整数,表示无符号的128位整数,以小端顺序表示:

typedef struct {
    unsigned int part[4];
} bigint_t;
Run Code Online (Sandbox Code Playgroud)

我想将此数字转换为十进制字符串表示形式并将其输出到文件中.

现在,我正在使用一个bigint_divmod10函数将数字除以10,跟踪余数.我重复调用此函数,将余数作为数字输出,直到数字为零.这很慢.这是最快的方法吗?如果是这样,有没有一种聪明的方法来实现我没有看到的这个功能?我试过看GMP get_str.c,但我发现它非常难以理解.

编辑:这是我能够为divmod10函数提供的最快的代码:

static unsigned uint128_divmod10(uint128 *value)
{
    unsigned int a = value->word[3];
    unsigned int b = value->word[2];
    unsigned int c = value->word[1];
    unsigned int d = value->word[0];

    unsigned int diva = a / 5;
    unsigned int divb = b / 5;
    unsigned int divc = c / 5;
    unsigned int divd = d / 5;

    value->word[3] = diva;
    value->word[2] = divb;
    value->word[1] = divc;
    value->word[0] = …
Run Code Online (Sandbox Code Playgroud)

c bignum bigint 128-bit

7
推荐指数
1
解决办法
8093
查看次数

标签 统计

128-bit ×1

bigint ×1

bignum ×1

bit-manipulation ×1

bit-packing ×1

boolean ×1

c ×1

c++ ×1