我有几个等式将返回我的数字中三位中每一位的二进制值。
我正在用 C 编程,这对我来说是一种新语言。
假设我的方程返回 Y0 = 1
、 Y1 = 0
和 Y2 = 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/