我有几个等式将返回我的数字中三位中每一位的二进制值。

我正在用 C 编程,这对我来说是一种新语言。

假设我的方程返回 Y0 = 1Y1 = 0Y2 = 1 ( 101 );我想将该值存储为 5

如果这些值由不同的方程返回,这在 C 中是可能的吗?

我知道如何通过乘法来做到这一点,但我正在寻找一个函数或我认为已经内置在 C 中的东西。

最佳答案

没有这样的运气。你必须乘(或移位,这是一样的)

unsigned Y0 = 1, Y1 = 0, Y2 = 1, val;

val = (Y0 * 4)  + (Y1 * 2)  + (Y2 * 1);  /* parens */
val = (Y0 << 2) + (Y1 << 1) + (Y2 << 0); /* redundant */

关于在 C 中从二进制 "components"构造一个 int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5863319/

10-11 00:24