c - 表示已知大小变量的表达式结果的最少位数?

标签 c memory assembly binary bit

我正在努力了解有关计算机如何存储内存的更多信息。所以我找到了有关如何表示二进制数或十六进制数的信息,但我发现了一个问题:

Given three n-bit unsigned ints: x, y, z, what is the min # 
of bits required to represent x * y + z 

所以我的想法是:我是否必须分别考虑所有三个整数并计算尽可能小的数字,例如 0 * 0 + 0

或者我是否必须考虑作为问题结果的另一个变量 n?

我在想这个问题时遇到了一些麻烦。

最佳答案

所需的位数是n + n。以使用 8 位和最大无符号值为例:

255 * 255 + 255 = 65280

结果小于 65536,这需要超过 16 位。

关于c - 表示已知大小变量的表达式结果的最少位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311415/

相关文章:

改变数组的基址

在 C 中调用 NASM 函数

linux - 利用缓冲区溢出 shellcode

c - IAR 的新 EWAVR32 (4.20)。编译器对内联汇编更加严格

检查文件中的重复单词

c - 字符串标记化c的麻烦

c++ - 通过 UDP 套接字传输结构的问题

java - 处理大型 TIFF 文件和内存分配

c - 将 typedef 从 header 传递到源 - C

使用 MSVC++ 2005 的 Windows 上的 C++ 内存问题和诊断