【ソフトテストの知識ポイントまとめ①】【中級ソフト設計者】計算機合成の原理~基数変換、元の負補数符号シフト、CPU構造、フリン分類法、CISCとRISC、パイプライン演算と計算、スループット率、パイプライン高速化率

要約を最初に置き、次に詳細な内容を置きます 

 

元のコード:

    符号ビット、正は 0、負は 1。

    桁数。数値の絶対値のバイナリ表現。

        [+1010B]オリジナル=0000 1010B;

        [-1010B] オリジナル=1000 1010B;

    ゼロには次の 2 つがあります。

        [+0]オリジナル=0000 0000B;

        [-0] オリジナル=1000 0000B;

元の逆補数コード シフト:

逆コード:

    符号ビット、正は 0、負は 1。

    値ビット。正は数値の絶対値の 2 進数表現であり、負は数値の絶対値の 2 進数表現の反転です。

        [+1010B] 逆=0000 1010B;

        [-1010B] 逆=1111 0101B;

    ゼロには次の 2 つがあります。

        [+0]リバース=0000 0000B;

        [-0] 逆=1111 1111B;

補体:

    符号ビット、正は 0、負は 1。

    値ビット。正は数値の絶対値の 2 進表現、負は数値の絶対値の 2 進表現で、逆数の場合は 1 を加えたものです。

        [+1010B] 補足=0000 1010B;

        [-1010B] 補足=1111 0110B;

    ゼロには次の 1 つがあります。

        [0] 補数 = 0000 0000B;

フレームシフト:

    符号ビット、正が 1、負が 0 です。

    値ビット。正は数値の絶対値の 2 進表現、負は数値の絶対値の 2 進表現で、逆数の場合は 1 を加えたものです。

        [+1010B] 補足=1000 1010B;

        [-1010B]補足=0111 0110B;

    ゼロには次の 1 つがあります。

        [0] 補足=1000 0000B;

16 進変換:

  ①ダイレクトコンバージョン方式

1. 2 進数の 10 進数への変換
例: 2 進数の「1101100」
1101100 ← 2 進数の
6543210 ← 順位付け方法 2 進数の

10 進数への変換アルゴリズムの例:
        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 進数への変換を例にとると、10 進数 n を入力し、n を毎回 2 で割り、剰余を書き留め、その商を使用して 2 で割ります...商が 0 になるまで順番に繰り返します     。残りを終了 逆順に並べると、変換された 2 進数が形成されます。
基数間のすべての変換についても同じことが言えます。2 は任意の数に置き換えることができます。10 進数から2 進数、8 進数、16 進数、16 進数の 64

10 進数は 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 基数から 10 進数へ:


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);
    }
}

 パイプライン計算:

例:

例: 命令パイプラインが命令を値取得、解析、実行に分割し、3 つの部分の時間が値取得 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