二进制转换

输入一个2进制数转换成10进制输出—循环练习9

戏子无情 提交于 2020-02-07 00:44:51
*#include #include <Windows.h> #include using namespace std; int main(void) { string str; //二进制数据 int q = 0; // int p = 1; cout << "请输入一个人二进制数据: "; cin >> str; for(int i=str.length()-1; i>=0; --i) { int j = str[i] - '0'; q += j*p; p *= 2; } cout << "q==" << q << endl; /** for (int i=str.length()-1; i>=0; i--) { int x = str[i] - '0'; s += x * p; p *= 2; } //假设:str = 1010 s = 0 p = 1 x = 0 // 1. 0-0 = 0 x = 0 // 2. 0*1 = 0 s = 0 0+0= 0=s // 3. 1*2 = 2 p = 2 // s = 0 p = 2 // 1. 1-0 = 1 x = 1 // 2. 1*2 = 2 s = 2 0+2= 2=s // 3. 2*2 = 4 p = 4 // s = 2 p = 4 // 1. 0-0 = 0 x = 0 // 2 . 0*4 = 0 s = 2

算术运算单元ALU的设计与实现

拟墨画扇 提交于 2019-12-30 13:10:27
算术运算单元ALU的设计与实现 这是2018年大三时的一个课程设计,在这里把相关技术和用到的知识分享给大家。(由于编者水平有限可能存在错误的地方,欢迎大家指正)题目给出的要求如下: 一、设计题目及要求 要求: 1.进行两个四位二进制数的运算。 2.算术运算:A+B,A-B,A+1,A-1 3.逻辑运算:A and B,A or B,A not, A xor B 注意:从整体考虑设计方案,优化资源的利用 二、设计过程及内容 2.1总体设计 ALU算术运算单元由以下几个部分构成: 图1 ALU运算单元系统结构图 为了尽可能减少资源的使用(或以相同的资源增加更多的功能),在此系统的基础上,增加基于寄存器的分时复用输入模块进行改进。 图2 基于分时复用方法的ALU运算单元结构 ①输入模块 该模块用于两个四位二进制数的输入。通过使用实验箱的拨码开关,输入高低电平,表示二进制的 1和0,四组拨码开关组合可以表示一个四位二进制数。 ②逻辑运算单元 该模块用于两个四位二级制数的逻辑运算。通过列出一位二进制数逻辑运算的真值表(含有四种不同的逻辑运算功能),得出了一位二进制数逻辑运算单元的表达式(已使用卡诺图化简)。将按照逻辑表达式连接好的多个一位二进制逻辑运算单元进行组合,可得到多位二进制数逻辑运算单元。 通过使用“真值表+卡诺图”的方法将所有的逻辑运算的表达式融合在一起进行化简