電腦的組成

進位

  • 十進制
    生活中的進位制是十進制,這種進位制通常使用10個阿拉伯數字(即 0-9 )進行記數
    0 1 2 3 4 5 6 7 8 9 10

  • 二進制
    幾乎所有的電子計算機內部都使用二進位制,分別為「0」和「1」表示「關」和「開」。用於大多數電子計數器。
    0 1 10 11 100 101 110 111 1000 1001 1010 1011

  • 十六進制
    經常用於計算機領域,2到4次冪。十六位數字為「0-9」,接著是「A-F」。
    0 1 2 3 4 5 6 7 8 9 A B C D E F 10

10進位轉2進位

67(十進位)

1
2
3
4
5
6
7
67÷2 = 33...1
33÷2 = 16...1
16÷2 = 8....0
8÷2 = 4...0
4÷2 = 2...0
2÷2 = 1...0
1÷2 = 0...1

所以二進制就是 1000011

2進位轉16進位

10110011

先拆解數字
1011與0011

1011 = B
0011 = 3

所以10110011 = B3

2進位轉成10進位

1101
就如我們小時候學的數學一樣

1
2
千 百 十 個
1 1 0 1

個 2^0 * 1 = 1
十 2^1 *0 = 0
百 2^2 *1 = 4
千 2^3 *1 = 8

1+0+4+8 = 13

1101(二進制) 的十進制就是 13(十進制)


title: 計算機概論6
date: 2024-10-16 08:58:19
tags:

overflow 溢位

七進制舉例

1
2
3
4
5
    0 1 1 1.   +7

“+” 0 1 1 1. +7
-----------------
1 1 1 0

第四位數如果原本是正數加完之後如果變成負數就是超過表示範圍

1001 → 0110 → 0111

補數可以說是將數值變成負數

1001 = -7

1
2
3
4
5
 1001 = -7

+1001 = -7
-------
0010

一個負數加一個負數 = 正數 = overflow

一個正數加一個正數 = 負數 = overflow

練習

11100110 十進制答案

1
11100110 -> 00011001 (一的補數)-> 00011010 (二的補數)= -26 
  • 解釋

    原始二進制數:

    • 11100110

    這是一個 8 位的二進制數,表示它是用來表示一個 有符號的數字,其中最高位(最左邊的 1)是符號位。當最高位是 1 時,這個數是負數;當最高位是 0 時,這個數是正數。

    2. 求一的補數:

    • 將每個位的數字反轉,將 1 變成 0,0 變成 1。

    • 原數字是 11100110,它的一的補數是 00011001。

    3. 求二的補數:

    • 在一的補數基礎上加上 1。

    • 00011001 + 1 = 00011010。

    4. 將二進制數轉換為十進制數:

    • 現在,我們已經得到了 00011010,它是二的補數形式,用來表示負數。

    • 00011010 = 26(十進制)。

檢查碼

  • 例如身份字號F233456789
  • 其中F代表地區
  • 剩下七個數字為流水號

Big - 5編碼規則(可變長度編碼)

  • 兩個byte代表一個漢字
  • 想辦法與英文字母相容

分首碼次碼,高位元的在前面

cscl.png

舉例:big-5 (cont’)

  • 0 一 A4440

  • 1 乙 A4440

  • 3 丁 A4440

  • 5400 籲 C67E

  • 5401 乂 C940

  • 5402 乜 C941

  • 5403 凵 C942

  • 5404 匚 C943

  • 5405 厂 C944

  • 5406 万 C945

  • 5407 丌 C946

https://web.tnu.edu.tw/me/study/moodle/tutor/vb6/tutor/r05/index.htm

其中有 408 個符號和所謂常用字 5401 個,
次常用字 7652 個

輸入法

  • 字音輸入法
    • 注音
    • 拼音
  • 字型輸入法
    • 倉頡
    • 大易

假如在鍵盤上我們可以應用的按件數是n

則n個鍵可以組成

$ n +n^2+n^3+…..

舉例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
0 1 1 0  ———>  6

1 1 1 0 ———> -6

0 0 0 0 ——→ 0

1 0 0 0 ———> -0 [x]

加法

0 1 1 0

+ 1 1 1 0
--------------------

0 1 0 0

上面是錯誤的

每個輸入法都有規則,開頭的第一位是1就是負數0就是正數

也可以用2的補數表去計算

正確

1 1 0 1 舉例

1
2
3
4
5
6
7
8
9
10
11
12
1101  2進位轉成 10進位

1 1 0 1 前面第一個是1 代表示負數

所以要取二的補數

1 1 0 1 → 0 0 1 0 = 一的補數第一位再加一 = 2 的補數

0 0 1 0
+ 1
--------
0 0 1 1 (2進位) = - 3(十進位)

轉換後之後記得加上負號

-7 寫出2的補數表

1
2
3
7 = 0111

0111 → 1000 = 一的補數再加一 = 二的補數 = 1001(二的補數)

1 0 0 0的補數 = 1 0 0 0

為什麼?

  • 因為在4位2進制下多出來的會被拋棄

4位補數的範圍

二進制十進制說明
00000正數 0
0001+1正數 1
0010+2正數 2
0011+3正數 3
0100+4正數 4
0101+5正數 5
0110+6正數 6
0111+7正數 7
1000-8負數 -8,特殊情況
1001-7負數 -7
1010-6負數 -6
1011-5負數 -5
1100-4負數 -4
1101-3負數 -3
1110-2負數 -2
1111-1負數 -1

表達範圍

4 bits = +7 ~ -8

= +2^(4-1) -1 ~ -2(4-1)

n bits = +2^(n-1) -1 ~ -2^(n-1)