c++ - 精度另外

标签 c++ c addition

我正在使用 C 语言的工具来计算一些传入/传出位,我想保留这些位而不是通过更改为字节来丢失它们。

最后我想显示下载/上传的 xxxxx 位。我将最大值放在 10GB=85899345920bits 上,这需要大约 35 位来表示。我使用的是 32 位操作系统。 我尝试了 unsigned long 和 unsigned int,但它们重载了。

有没有简单的方法来获得加法过程并保持准确性?

最佳答案

您可以采用一些混合方法:将字节 的数量存储到一个变量中,将额外的 的数量存储到另一个变量中。类似于 POSIX 系统如何以秒 微秒返回纪元以来的时间:

       struct timeval {
           time_t      tv_sec;     /* seconds */
           suseconds_t tv_usec;    /* microseconds */
       };

当您收到 1505 位的传输时,存储:

bytes += (1505/8); // ==188
bits += (1505%8); // ==1

这样您就可以跟踪位。

或者您可以充分利用它并使用 long long .

关于c++ - 精度另外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968440/

相关文章:

javascript - 设置和添加数组值时遇到问题 javascript

javascript - 获取 "data"的值

c++ - 没有进位标志的大整数加法

c++ - 使用列表/迭代器 (C++) 的愚蠢编译错误

c++ - 如何以表格形式输出

c - 为什么指针变量不显示 100 位数字?

c - scandir 按子串过滤

C++比较2个字符串列表

c++ - 在 C++ 的析构函数中删除指针后,将 NULL 分配给指针是否有任何用处?

c - 查找多个整数之间的最小值和最大值