精华内容
下载资源
问答
  • 本电路实现了同步六进制加法计数器的功能. 本电路的设计是为了给电子时钟模型的设计提供计数支持. 读者应仔细体会设计过程, 以进一步掌握同步时序逻辑电路的设计方法.
  • 三十六进制加法

    2020-01-01 17:10:20
    三十六进制加法: 由 数字 + 小写字母 组成 0-9 表示 0-9 a-z 表示 10-35 第一种、直接通过36进制将两个数相加 思路: 通过一个数组下标相加是否超出36 判断是否进位 public class Main { public static ...

    三十六进制加法:
    数字 + 小写字母 组成
    0-9 表示 0-9
    a-z 表示 10-35


    第一种、直接通过36进制将两个数相加

    思路: 通过一个数组下标相加是否超出36 判断是否进位

    public class Main {
    
    	public static Character[] nums = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    	
    	// 底层还是数组 
    	private static List<Character> list = Arrays.asList(nums);
    
    	
    	public static void main(String[] args) {
    
    		Scanner in = new Scanner(System.in);
    		
    		String str1 = in.nextLine();
    		String str2 = in.nextLine();
    		
    		System.out.println(addResult(str1,str2));
    	}
    	
    	// 相加
    	public static String addResult(String str1, String str2) {
    		
    		char[] s1 = str1.toCharArray();
    		char[] s2 = str2.toCharArray();
    		// 低位到高位
    		int i = str1.length() - 1;
    		int j = str2.length() - 1;
    		
    		// 判断进位
    		int temp = 0;
    		
    		// StringBuilder 我记得好像是比  StringBuffer 还要高级的封装,比StringBuffer 快一下,主要用于 append 和 insert 
    		StringBuilder sb = new StringBuilder();
    		
    		// str1 和 str2 位数相等
    		while(i >= 0 && j >= 0) {
    			
    			// 找出该字符的索引
    			int index1 = list.indexOf(s1[i]);
    			int index2 = list.indexOf(s2[j]);
    			
    			int sum = index1 + index2 + temp;
    			
    			// 判断进位
    			if(sum >= 36) {
    				temp = 1;
    				sb.append(list.get(sum % 36));
    			}else {
    				temp = 0;
    				sb.append(list.get(sum));
    			}
    			i--;
    			j--;
    		}
    		
    		// str1 比 str2 多位数
    		while(i >= 0) {
    			
    			int index1 = list.indexOf(s1[i]);
    			
    			int sum = index1 + temp;
    			
    			// 判断进位
    			if(sum >= 36) {
    				temp = 1;
    				sb.append(list.get(sum % 36));
    			}else {
    				temp = 0;
    				sb.append(list.get(sum));
    			}
    			i--;
    		}
    		
    		// str2 比 str1 多位数
    		while(j >= 0) {
    			
    			int index2 = list.indexOf(s2[j]);
    			
    			int sum = index2 + temp;
    			
    			if(sum >= 36) {
    				temp = 1;
    				sb.append(list.get(sum % 36));
    			}else {
    				temp = 0;
    				sb.append(list.get(sum));
    			}
    			j--;
    		}
    		
    		// 最后判断是否存在进位
    		if(temp >= 1) {
    			sb.append(1);
    		}
    		 
    		// 从低位加到高位的,所以反转
    		return sb.reverse().toString();
    	}
    }
    
    

    第二种、暴力转换

    思路: 先把 36 进制转换成10进制,10 进制相加,再把结果转换成 36 进制

    public class Main {
    
    	
    	public static Character[] nums = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    	
    	// 底层还是数组 
    	private static List<Character> list = Arrays.asList(nums);
    	
    	
    	public static void main(String[] args) {
    
    		Scanner in = new Scanner(System.in);
    		
    		String str1 = in.nextLine();
    		String str2 = in.nextLine();
    		
    		System.out.println(addResult(str1,str2));
    	}
    	
    	// 相加
    	public static String addResult(String str1, String str2) {
    		
    		char[] s1 = str1.toCharArray();
    		char[] s2 = str2.toCharArray();
    		int i = str1.length() - 1;
    		int j = str2.length() - 1;
    		
    		int sum = 0;
    		
    		// 转 10 进制
    		while(i >= 0) {
    			int index = list.indexOf(s1[i]);
    			sum += index * Math.pow(36, str1.length()-i-1);
    			
    			i--;
    		}
    		
    		while(j >= 0) {
    			int index = list.indexOf(s2[j]);
    			sum += index * Math.pow(36, str2.length()-j-1);
    			
    			j--;
    		}
    		
    		
    		// 将 结果 转成36进制
    		StringBuilder sb = new StringBuilder();
    		while(sum != 0) {
    			int num = sum % 36;
    			sb.append(list.get(num));
    			sum /= 36;
    		}
    		
    		return sb.reverse().toString();
    	}
    
    }
    
    展开全文
  • 用74160以同步置数法实现了同步六进制加法计数器的功能. 掌握74160的应用方法对于提升电路设计效率有着十分重要的作用.
  • 本电路实现了异步六进制加法计数器的功能. 该设计思路用观察时序图的方式求出时钟方程, 再根据时钟取值修改状态表, 之后再求出状态激励方程(D触发器).
  • 二十六进制加法

    2018-09-08 10:00:24
    二十六进制加法 #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;vector&gt; #include&lt;stdio.h&gt; using namespace std; vector&lt;char&gt; add...

    二十六进制加法


    #include<iostream>
    #include<string>
    #include<vector>
    #include<stdio.h>
    using namespace std;

    vector<char> add(string str1, string str2)
    {
        vector<char> v;
        if (str1.length() == 0 || str2.length() == 0)
        {
            return v;
        }
        int carry, remainder, carry1 = 0,i,j,k,l;
        char* ch;
        for (i = str1.length()-1, j = str2.length()-1; i >=0  && j >=0 ; i--, j--)
        {
            carry = 0;//进位
            int sum = (str1[i] - 97) + (str2[j] - 97);//从数组最后的元素先加     相当于个位数先加  依次往前
            //-97的原因是因为将每个字符都变成十进制相加
            if (sum >= 26)//如果大于26  说明有进位
            {
                remainder = sum % 26+carry1;//sum与二十六的余数表示进位之后剩下的数    参见十进制加法
                remainder += 97;//加97是为了回到字符   二十六进制
                
                carry = 1;
                v.push_back(remainder);//v用来存放每位数相加之后的结果
            }
            else//若没有进制直接将数放入v中
            {
                sum += 97;
                
                v.push_back(sum);
            }
                
            carry1 = carry;//carry1表示记录前一位数的进位情况    carry表示本次的进位情况
            k = j;
            l = i;
        }
        while (l != 0)
        {
            if (carry == 1)
            {
                //cout << str1[l-1] ;
                v.push_back(str1[l-1] + carry);//如果两个加数的位数不一样   将位数多的   没有数与其相加的放入v中
                carry = 0;
            }
            else
                v.push_back(str1[l - 1]);
            l--;
        }
        while (k != 0)
        {
            if (carry == 1)
            {
                v.push_back(str2[k-1] + carry);
                carry = 0;
            }
            k--;
        }
        return v;
    }

    int main16()
    {
        string str1="abc", str2="ab";
        vector<char> myv;
        myv=add(str1, str2);
        for (int i = myv.size()-1; i >=0; i--)//倒序输出
        {
            cout << myv[i] << "  ";
        }
        system("pause");
        return 0;
    }

    展开全文
  • 三十六进制加法: 由数字 + 小写字母组成,此时每个数字用字符串表示。 0-9 表示 0-9, a-z 表示 10-35 如”1a“ + "2b" = "3c", "3"+"a"=”d" 这里可以使用字符串直接进行求和 注:不可以转换为整数,如果转换为...

    三十六进制加法:
    由 数字 + 小写字母 组成,此时每个数字用字符串表示。
    0-9 表示 0-9, a-z 表示 10-35

    如”1a“ + "2b" = "3c", "3"+"a"=”d"

     这里可以使用字符串直接进行求和

    注:不可以转换为整数,如果转换为整数,可能会导致内存溢出,且会占用大量内存。

    
    class Solution{
    public:
        /*判断每个字符属于0-9还是a-z*/
    	char getChar(int n){
    		if(n <= 9) return n+'0';
    		else return n-10+'a';
    	}
    	
    	int getInt(char ch){
    		if('0' <= ch && ch <= '9') return ch - '0';
    		else return ch - 'a' + 10;
    	}
    	
    	string add36Strings(string num1, string num2){
    		int carry = 0;
    		int i = num1.size()-1, j = num2.size()-1;
    		string res;
    		while(i>=0 || j>=0 || carry){
                // 这里使用三目运算符,可以减少运行时间
    			int x = i >= 0 ? getInt(num1[i]) : 0;
    			int y = j >= 0 ? getInt(num2[j]) : 0;
    			int sum = x + y + carry;
    			res += getChar(sum%36);
    			carry = sum/36;
    			i--,j--;
    		}
    		reverse(res.begin(),res.end());
    		return res;  
    	}
    };
    
    int main ()
    {
    	Solution s;
    	string a = "b", b = "x", c;
    	c = s.add36Strings(a,b);
    	cout << c << endl;
    }

     

    展开全文
  • 异步六进制加法计数器

    千次阅读 2019-10-26 11:56:23
  • C++ 实现二十六进制加法

    千次阅读 2018-09-07 11:41:21
    实现26进制加法 其中, 'a'代表0,z代表25,依次类推 输入为 'a'~'z'26个小写字母的组合, 输出也为 'a'~'z'的组合 思路:先将输入字符串转换为10进制数,进行加法之后,再转换为26进制   #include&lt;...
  • 同步六进制加法计数电路(D触发器)

    千次阅读 2019-11-13 18:46:15
  • 用小写字母a-z代表0-25,进行两个数的加法运算 import java.util.ArrayList; import java.util.Scanner; public class Test { //全局变量进位 private static int jinWei = 0; public static void main...
  • (1)列状态表: (2)列状态激励表: (3)根据状态激励表求状态激励方程和输出方程: (D触发器Q^(n+1)=D, 故这里不再赘述次态方程) ...(电路源文件在我的资源中可以找到, 欢迎大家下载访问) ...
  • 本电路用同步十进制加法计数电路和同步六进制加法计数器电路的有机组合, 实现了六十进制加法计数器的功能. 通过该例子的设计, 可对同步N进制加法计数器输出Y的设定有进一步的认识.
  • 在之前对于同步计数器的... 我们通过同步十进制加法计数器和同步六进制加法计数器的有机组合来看一下这其中的奥妙. 对于同步十进制加法计数器的设计, 我们都知道在1001->0000时, Y由0->1: 那么问题来了, 究...
  • 六进制,自定义六进制: 七进制,自定义七进制,七进制加法表,乘法表: 九进制,自定义九进制,自定义九进制加法表,加法运算: 自定义十进制,自定义十进制加法; 自定义10进制,由10个符号组成,! @ $ ...
  • 计算机原理之二进制加法

    千次阅读 2018-11-12 20:59:21
    、二进制加法器 七、回顾与前瞻 当我们真正面对计算机,就会发现,加法计算就是计算机要做的唯一工作。 一、二进制数加法表 二进制数加法与十进制数加法最大的不同就在于二进制数加法中用到了一个更为简单的...
  • 实现简单的26进制加法

    千次阅读 2018-09-06 11:22:26
    实现简单的26进制加法 两个大整数相加,每一位是一个小写字母,二十六进制,a表示0,z表示25,求结果。例如: 输入:z 和 bc 输出: cb 解析 首先,以字符串的格式输入两个加数,然后,利用函数getCol()将两...
  • 4) 不同芯片也可实现进制。 1.2 计数器设计组成 1) 用两个 74ls192芯片和一个与非门实现。 2) 当定时器递增到 59 时,定时器会自动返回到 00 显示,然 后继续计时。 3) 两个芯片间的级联 实验设备与器件...
  • 两个大整数相加,每一位是一个小写字母,二十六进制,a表示0,z表示25,求结果。例如: 输入:z 和 bc 输出: cb 实现 #include <iostream> #include<cstring> using namespace std; int main() { ...
  • 掌握加法计算程序的设计思路和设计方法。 二. 实验内容 1.内容: 1)将两个多精度十进制数相加。 2)要求被加数和加数均以组合BCD码形式各自存放在以DATA1和DATA2为首的连续的5个内存单元中,结果送回被加数...
  • 本电路实现了同步六进制加减法可逆计数器的功能: 电路能准确地按照六进制加法或减法计数的规律进行计数. 读者应深刻理解本例的分析和设计过程, 以为日后设计更为复杂的同步时序逻辑电路打下基础.
  • 本电路实现了同步六进制加减法可逆计数器的功能: 电路能准确地按照六进制加法或减法计数的规律进行计数. 读者应深刻理解本例的分析和设计过程, 以为日后设计更为复杂的同步时序逻辑电路打下基础.
  • 本文是关于FPGA中二进制加法的。
  • 这个题目其实很好想,就把字符串当成26进制的,然后求其加和在求其平均值,当然加法和除法都是二十六进制的 a代表0,z代表25。 又因为保证有奇数个字符串不小于s,也不大于t,所以在给出的s的基础上加上1,就能保证...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 144
精华内容 57
关键字:

六进制加法