計算機體系、語言的基礎認識
阿新 • • 發佈:2018-03-25
轉換成 script body 存儲 bsp 之間 外存 異或 隱式 馮諾依曼體系:
I/O:輸入設備與輸出設備
CPU:
運算器:計算數據
控制器:控制程序的運行
CPU還有寄存器與多級緩存
存儲器:磁盤(外存);內存(快):掉電即失
所有數據從磁盤到內存再到CPU
數據從內存先到寄存器再被CPU使用
計算機語言:
編譯語言:源代碼經本地編譯後裝還成目標機器的CPU指令
解釋語言:源代碼經解釋器(Cpython、Ipython、pypi等)解釋為字節碼(bytecode),運行在虛擬機上,虛擬機將字節碼轉換為物理CPU識別的指令去運行(python,java輸入解釋型語言)
動態語言:變量類型不需要事先聲明,可隨時賦值為其他類型(python)
靜態語言:變量類型需要事先聲明,且不可更改(java、c++、c#等)
強類型語言:不同類型之間不可操作,必須轉換成同一類型(沒有隱式轉換,python,java等)
弱類型語言:不同類型之間可以操作,自動隱式轉換(javascript)
python是解釋型動態強類型語言
python是有垃圾回收GC機制的,引用計數增加與減少,引用計數減少到0時會被GC捕獲,在適當的時候進行垃圾回收
源碼、反碼和補碼:
數據在計算機是以二進制形式存在的,計算機計算數據(加法)時用補碼來運算
正數的源碼、反碼和補碼相同
負數:
源碼轉化為補碼:符號位不變其余按位取反後加1
補碼的補碼為源碼
例子:1-2(等同於-2+1,計算機不會減法)
1、先取-2與1的補碼,-2補碼為:1110;1的補碼為:0001
2、兩個補碼相加為:1111
3、因1111為補碼,所以需要將其轉換成源碼,而補碼的補碼為源碼
4、將1111符號位不變其余按位取反後加1後為:1001
5、所以最終運算結果為1001(源碼),轉換為十進制即為-1
位運算符(二進制運算,負數需要先將其轉換為補碼再進行位運算):
&:按位與;都為1時為1(以正整數為例:1010&1100為1000)
|:按位或;有一個為1即為1(以正整數為例:1010|1100為1110)
~:按位取反:需要先將整數轉換為補碼後在取反;例子:~12
1、0000 1100(12的補碼)
2、1111 0011 (取反後為補碼,下一步將補碼轉換成源碼)
3、1000 1101 (符號位不變,其余按位取反後加1即為源碼)
4、轉換為十進制即為-13
^:異或:按位相同為0,不同為1
<<:按位左移
>>:按位右移
運用位運算符是提高效率的方法。熟練使用位運算符
計算機體系、語言的基礎認識