[软考知识点总结①] 【中级软件设计师】计算机组成原理——进制转换、原反补移码、CPU结构、Flynn分类法、CISC和RISC、流水线操作和计算、吞吐率、流水线加速比

先放总结,下有细讲内容 

 

原码:

    符号位,正为0、负为1。

    数值位,数字绝对值的2进制表示。

        [+1010B]原=0000 1010B;

扫描二维码关注公众号,回复: 14874398 查看本文章

        [-1010B]原=1000 1010B;

    零有两个:

        [+0]原=0000 0000B;

        [-0]原=1000 0000B;

原反补移码 :

反码:

    符号位,正为0、负为1。

    数值位,正为数字绝对值的2进制表示、负为数字绝对值的2进制表示取反。

        [+1010B]反=0000 1010B;

        [-1010B]反=1111 0101B;

    零有两个:

        [+0]反=0000 0000B;

        [-0]反=1111 1111B;

补码:

    符号位,正为0、负为1。

    数值位,正为数字绝对值的2进制表示、负为数字绝对值的2进制表示取反加1。

        [+1010B]补=0000 1010B;

        [-1010B]补=1111 0110B;

    零有一个:

        [0]补=0000 0000B;

移码:

    符号位,正为1、负为0。

    数值位,正为数字绝对值的2进制表示、负为数字绝对值的2进制表示取反加1。

        [+1010B]补=1000 1010B;

        [-1010B]补=0111 0110B;

    零有一个:

        [0]补=1000 0000B;

进制转换 :

  ①直接转换法

一、二进制转换十进制
例:二进制 “1101100”
1101100    ←二进制数
6543210    ←排位方法

例如二进制换算十进制的算法:
        1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20
        ↑    ↑
说明:2代表进制,后面的数是次方(从右往左数,以0开始)
=64+32+0+8+4+0+0
=108

②除基取余法: 

     以10进制转2进制为例:输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。
所有进制之间的转换都是如此,2可以换成任何数字。十进制转二进制、八进制、十六进制、64进制

十进制变成N进制:


public class Main {
 
    public static void main (String[] args) {
        int n = 64;//需要转换的数字
        int m = 5; //转换的进制(如果大于10,需考虑使用其他字符表示)
 
        int t = 0;  //用来记录位数
        int bin = 0; //用来记录最后的二进制数
        int r = 0;  //用来存储余数
        while(n != 0){
            r = n % m;
            n = n / m; //注意:n为int,可以保证其肯定是一个整数,且是进制转换需要的整数
            bin += r * Math.pow(10,t); //pow函数:10的t次方
            t++;
        }
        System.out.println(bin);
    }
}

 N进制变成十进制:


public class Main {
 
    public static void main (String[] args) {
        int n = 224;//需要转换的数字
        int m = 2; //进制
        int des = 0; //储存转换后的结果
 
        String s = new StringBuilder(String.valueOf(n)).reverse().toString();  //reverse使字符串倒序
        for (int i = 0 ;i<s.length();i++){
            int charIndex = s.charAt(i)-'0';
            des += charIndex*Math.pow(m, i);
        }
 
        System.out.println(des);
    }
}

 流水线计算:

例题:

例:若指令流水线把一条指令分为取值、分析和执行,且三部分的时间分别是取值2ns,分析2ns,执行1ns。那么,流水线周期是多少?100条指令全部执行完需要多少时间?

流水线周期为:2ns

100条需耗时:

理论值:先算一条指令耗时:2ns+2ns+1ns=5ns

​ 5ns+(100—1)x2ns=203ns

实际值:(3+99)x2ns=204ns

猜你喜欢

转载自blog.csdn.net/weixin_51538341/article/details/127931199