Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
3年前关闭。
给定具有输入位和输出位的真值表,是否容易找到将输入位组合为单个输出位的布尔表达式?
我的问题是,派生的布尔表达式对每个位分别进行运算。
我正在寻找相同的过程,但使用的是编程语言中使用的按位运算符,该运算符对所有输入位并行进行操作以并行导出输出位。
问题示例:
输入:8位整数,其中只有一些输入位相关,例如位2和5。其他状态与输出无关。
输出:8位整数,具有两个相关的输出位,取决于两个相关的输入位的状态,例如位3和6。所有其他位应统一设置为1或0。
有没有办法:
推导对输入整数进行按位运算的公式/算法,以复制“部分真值表”?
最小化派生公式/算法的复杂性?
然后,我将定义如何隔离输入位:
以及如何将输出位放置在正确的输出位置
现在,在代码中,我将根据您的逻辑描述如何操作它
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
3年前关闭。
给定具有输入位和输出位的真值表,是否容易找到将输入位组合为单个输出位的布尔表达式?
我的问题是,派生的布尔表达式对每个位分别进行运算。
我正在寻找相同的过程,但使用的是编程语言中使用的按位运算符,该运算符对所有输入位并行进行操作以并行导出输出位。
问题示例:
输入:8位整数,其中只有一些输入位相关,例如位2和5。其他状态与输出无关。
输出:8位整数,具有两个相关的输出位,取决于两个相关的输入位的状态,例如位3和6。所有其他位应统一设置为1或0。
有没有办法:
推导对输入整数进行按位运算的公式/算法,以复制“部分真值表”?
最小化派生公式/算法的复杂性?
最佳答案
好吧,我会做这样的事情:
首先定义一些位掩码:
#define BITMASK0 (1<<0)
#define BITMASK1 (1<<1)
#define BITMASK2 (1<<2)
#define BITMASK3 (1<<3)
#define BITMASK4 (1<<4)
然后,我将定义如何隔离输入位:
#define INBIT0(x) (BITMASK0&(x))>>0
#define INBIT1(x) (BITMASK1&(x))>>1
#define INBIT2(x) (BITMASK2&(x))>>2
#define INBIT3(x) (BITMASK3&(x))>>3
#define INBIT4(x) (BITMASK4&(x))>>4
以及如何将输出位放置在正确的输出位置
#define OUTBIT0(x) ((x)<<0) & BITMASK0
#define OUTBIT1(x) ((x)<<1) & BITMASK1
#define OUTBIT2(x) ((x)<<2) & BITMASK2
#define OUTBIT3(x) ((x)<<3) & BITMASK3
#define OUTBIT4(x) ((x)<<4) & BITMASK4
现在,在代码中,我将根据您的逻辑描述如何操作它
int main()
{
unsigned char a; // choose your initialization here
unsigned char b = 0;
b = OUTBIT0(1) | OUTBIT1(INBIT5(a) & INBIT3(a)) | OUTBIT2(0);
}
关于c++ - 真值表按位表达,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35699947/
10-13 08:25