64位除法

-2 c algorithm 64-bit

任何人都可以给我发送代码来划分2个64位数字.我的编译器只支持32/32分区.

Thanx&Regards

玛尼

Tom*_*Tom 11

你肯定你的编译器不支持64位除法吗?如果您的C编译器支持C99,这应该工作:

#include <stdint.h>
#include <stdio.h>
int main(void)
{
    int64_t numerator = 123;
    int64_t denominator = 10;
    int64_t quotient = numerator / denominator
    printf("%" PRId64 " / %" PRId64 " = %" PRId64 "\n",
           numerator, denominator, quotient);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • "long long"在C99中,保证至少为64位. (3认同)
  • @ysth:intX_t是标准C99的一部分,如果实现提供二进制补码64位整数,则需要int64_t.您还可以使用C99中所需的int_least64_t,并保证至少为64位. (3认同)
  • @ysth:不是真的!stdint.h 在 C99 标准中定义(在 wikipedia 中搜索 stdint.h)。它曾经是一个 POSIX 扩展,它变成了标准 C。顺便说一句 u_int64_t 仍然是一个 POSIX 扩展,只有 uint64_t 是 C 标准(注意额外的下划线)。 (2认同)

180*_*ION 6

代码在linux中可用,请参阅div64.c.你能复制一下吗?