cpu: 中央處理器. 至關於人的大腦.運算中心,控制中心.spa
內存: 臨時存儲數據. 優勢:讀取速度快,缺點:容量小,造價高,斷電即消失.操作系統
硬盤: 長期存儲數據. 優勢:容量大,造價相對低,斷電不消失,缺點:讀取速度慢.內存
操做系統:統一管理計算機軟硬件資源的程序資源
b = bit 位(比特)it
B = Byte 字節硬件
1Byte = 8 bit #一個字節等於8位 能夠簡寫成 1B = 8b二進制
1KB = 1024B程序
1MB = 1024KBcpu
1GB = 1024MB數據
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
二進制:由2個數字組成,有0 和 1 例: 0b101
八進制:由8個數字組成,有0,1,2,3,4,5,6,7 例: 0o127
十進制:有10個數字組成,有0,1,2,3,4,5,6,7,8,9 例: 250
十六進制:有16個數字組成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(字母大小寫均可以,分別表明10,11,12,13,14,15) 例:0xff 0Xff 0XFF
(1)二進制 轉化成 十進制:
例: 0b10100101
運算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7=
1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165
(2)八進制 轉化成 十進制:
例: 0o127
運算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
(2) 十六進制 轉化成 十進制:
例: 0xff
運算:15*16^0 + 15*16^1 = 255
小練習: 轉化成十進制
0b11010110 #214
0b01110101 #117
0o234
0o171
0x123
0x1c2
(1)十進制 轉化成 二進制:
426 => 0b110101010
運算過程: 用426除以2,得出的結果再去不停地除以2,
直到除完最後的結果小於2中止,
在把每一個階段求得的餘數從下到上依次拼接完畢便可
(2)十進制 轉化成 八進制:
426 => 0o652
運算過程: 用426除以8,得出的結果再去不停地除以8,
直到除完最後的結果小於8中止,
在把每一個階段求得的餘數從下到上依次拼接完畢便可
(3)十進制 轉化成 十六進制:
運算過程: 用426除以16,得出的結果再去不停地除以16,
直到除完最後的結果小於16中止,
在把每一個階段求得的餘數從下到上依次拼接完畢便可
小練習: 轉化成對應進制
723 => 2
654 => 2
723 => 8
654 => 8
723 => 16
654 => 16
二進制與八進制對應關係:
八進制 二進制
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
```
```
例:1010100101
八進制:從右向左 3位一隔開 不夠三位用0補位 變成:
001 010 100 101
0o 1 2 4 5
```
```
十六進制 二進制
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
a 1010
b 1011
c 1100
d 1101
e 1110
f 1111
```
```
例:1010100101
十六進制:從右向左 4位一隔開 不夠四位用0補位 變成:
0010 1010 0101
0x2a5
先轉換成二進制 再去對應轉換
好比:0x2a5 轉換成 1010100101 再轉8進制 0o1245
### 小練習: 轉化成對應進制
0x1DD => 8
0x29a => 8
0o573 => 16
0o336 => 16
1.概念
計算機的全部數據在底層都是以二進制的[補碼]形式存儲
實際人們看到的數字是[原碼]轉化來的
而[原碼]是經過[補碼]獲得的
補碼 -> 原碼 -> 最後人們看到的數
***進制轉換的時候須要先把內存存儲的補碼拿出來變成原碼在進行轉換輸出***
正數高位補0 負數高位補1(前面空白位全是1)
數字1 00000000 1 正數高位都補0
數字-1 11111111 1 負數高位都補1
原碼: 用來轉換對應進制
反碼: 二進制碼0變1,1變0叫作反碼,反碼用於原碼補碼之間的轉換.(符號位不變)
補碼: 用來作數據的存儲運算. 補碼提出的根源是讓計算機底層的實現減法操做(能夠表達出一個數的正負)
言外之意:計算機默認只會作加法,例:5+(-3) => 5 - 3
乘法除法:是經過左移和右移 << >> 來實現
2.運算
(原碼 反碼 補碼之間的轉換 , 符號位不要動)
正數: 原碼 = 反碼 = 補碼
負數: 原碼 = 補碼取反加1 給補碼求原碼
負數: 補碼 = 原碼取反加1 給原碼求補碼
小練習:
#給原碼求補碼
-6 的補碼是多少?
原碼爲: 1 0000...00000110
反碼爲: 1 1111...11111001
補碼爲: 1 1111...11111010
6 的補碼是多少?
6是整數原碼和反碼和補碼相同得:
補碼爲:0 0000...00000110
10 的補碼是多少?
補碼爲:0 0000...00001010
-10 的補碼是多少?
原碼爲:1 0000...00001010
反碼爲:1 1111...11110101
補碼爲:1 1111...11110110
9 的補碼是多少?
補碼爲:0 0000...00001001
-9 的補碼是多少?
原碼爲: 1 0000...00001001
反碼爲:1 1111...11110110
#給補碼求原碼
1 ... 111 00011 (高位都是1)
1 ... 111 0110010 (高位都是1)
# 9+(-5) 用二進制相加運算一下
5-3 運算結果 (用二進制的形式表達)
5 + (-3) => 5 - 3
5 => 101
-3 => ?
(1) 先算-3的原碼
1 0000...000 011
(2) 取反
1 1111...111 100
(3) 加1 最終值是補碼 (用來作算術運算或存儲用的)
1 1111...111 101
5 => 0 0000...000 101
-3 => 1 1111...111 101
2 => 0..0000 .. 010
#(1) 正數的原碼 反碼 補碼 全都同樣
由於高位時0 因此不須要再用補碼取反+1 獲得原碼了,直接轉換便可.
-5+3
-5 => ?
(1) 先算-5的原碼
1 0000.0000 101
(2) 取反
1 1111.1111 010
(3) 加一
1 1111.1111 011
3 => ?
(1) 原碼
0 0000.0000 011
由於是正數 因此原碼和補碼相同,不須要再轉換了
用補碼運算:
1 1111.1111 011
0 0000.0000 011
1 1111.1111 110
獲得一個補碼(負數)
給補碼求原碼:
# 取反
1 0000.0000 001
# 加一 (原碼)
1 0000.0000 010
-2
******
#最終進制轉換用的是原碼
#作算數運算或存儲用補碼