[Practice]关于数字电路的一个问题

优先级编码器设计
本文介绍了一种基于C++实现的优先级编码器设计方法,该编码器能够从7个输入端口中筛选出优先级最高的有效端口,并通过7个输出端口表示其编号。

问题:

假定有7个输入端口,有2种输入状态:1(有效)、0(无效)。端口编号分别为0~7,编号越大优先级越高,

请设计一个电路来筛选出有效端口中优先级最高的那一个。(输出端口也是有7个,端口编号分别为0~7。每次输

出都只有一个端口有效,其余无效,而这个有效端口的编号为筛选结果)


个人做法:

对于有效端口中优先级最高的那个端口,一定不存在优先级更高的有效端口

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

void print(bool status)
{
	cout << status << " ";
}

int main(int argc, char const *argv[])
{
	cout << "Please enter your ports' status: (0 or 1)" << endl;
	std::vector<bool> v;
	for (int i = 0; i < 7; ++i)
	{
		bool buffer;
		cin >> buffer;
		v.push_back(buffer);
	}
	v.at(5) = (!v.at(6) && v.at(5));
	v.at(4) = (!v.at(6) && !v.at(5) && v.at(4));
	v.at(3) = (!v.at(6) && !v.at(5) && !v.at(4) && v.at(3));
	v.at(2) = (!v.at(6) && !v.at(5) && !v.at(4) && !v.at(3) && v.at(2));
	v.at(1) = (!v.at(6) && !v.at(5) && !v.at(4) && !v.at(3) && !v.at(2) && v.at(1));
	v.at(0) = (!v.at(6) && !v.at(5) && !v.at(4) && !v.at(3) && !v.at(2) && !v.at(1) && v.at(0));
	
	cout << "Filter Output:" << endl;
	for_each(v.begin(), v.end(), print);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值