1. 程式人生 > >計算機基礎知識重點彙總

計算機基礎知識重點彙總

   以下內容均為個人按自己所需整理而來,內容引用各個其他前輩的部落格,如有所涉及版權問題,其版權歸原作者所有!

一.進位制轉換

   1.二進位制–>十進位制
   方法:二進位制數從低位到高位(即從右往左)計算,第0位的權值是2的0次方,第1位    的權值是2的1次方,第2位的權值是2的2次方,依次遞增下去,把最後的結果相加的      值就是十進位制的值了。
   1010(B)
   1×2^3+0×2^2+1×2^1+0×2^0=10

    2.十進位制–>二進位制
方法:除2取餘法,即每次將整數部分除以2,餘數為該位權上的數,而商繼續除以2,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數讀起,一直到最前面的一個餘數。
106(D)
1、106 ÷ 2 = 53 ……0
2、53 ÷ 2 = 26 ……1
3、26 ÷ 2 = 13 …….0
4、13 ÷ 2 = 6 ……1
5、6 ÷ 2 = 3 ……..0
6、3 ÷ 2 = 1 ……..1
7、1÷ 2 = 0 ……….1
所以轉換後的二進位制數為:1101010

ASCII 碼
學過計算機的人都知道 ASCII 碼,總共有 128 個(0-127),用一個位元組的低 7 位表示,0~31 是控制字元如換行回車刪除等;32~126 是列印字元,可以通過鍵盤輸入並且能夠顯示出來。
其中48~57為0到9十個阿拉伯數字
65~90為26個大寫英文字母
97~122號為26個小寫英文字母

一. 機器數和真值

  • 機器數
    一個數在計算機中的二進位制表示形式, 叫做這個數的機器數。機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數為0, 負數為1.比如,十進位制中的數 +3 ,計算機字長為8位,轉換成二進位制就是00000011。如果是 -3 ,就是 10000011 。那麼,這裡的 00000011 和 10000011 就是機器數。

  • 真值
    因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 -3 而不是形式值131(10000011轉換成十進位制等於131)。所以,為區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值

    例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

二. 原碼, 反碼, 補碼的基礎概念和計算方法.

在探求為何機器要使用補碼之前, 讓我們先了解原碼, 反碼和補碼的概念.對於一個數, 計算機要使用一定的編碼方式進行儲存. 原碼, 反碼, 補碼是機器儲存一個具體數字的編碼方式.

  • 原碼
    原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值
    . 比如如果是8位二進位制:
[+1]原 = 0000 0001

[-1]原 = 1000 0001
  • 1
  • 2
  • 3

第一位是符號位. 因為第一位是符號位, 所以8位二進位制數的取值範圍就是:

[1111 1111 , 0111 1111]
  • 1

[-127 , 127]
  • 1

原碼是人腦最容易理解和計算的表示方式.

反碼

反碼的表示方法是:

正數的反碼是其本身

負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反
  • 1
  • 2
  • 3

可見如果一個反碼錶示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算.

  • 補碼

補碼的表示方法是:

正數的補碼就是其本身

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補
  • 1
  • 2
  • 3

對於負數, 補碼錶示方式也是人腦無法直觀看出其數值的. 通常也需要轉換成原碼在計算其數值.

為何要使用原碼, 反碼和補碼

即: 1-1 = 1 + (-1) = 0

為了解決原碼做減法的問題, 出現了反碼

於是補碼的出現, 解決了0的符號以及兩個編碼的問題:

使用補碼, 不僅僅修復了0的符號以及存在兩個編碼的問題, 而且還能夠多表示一個最低數. 這就是為什麼8位二進位制, 使用原碼或反碼錶示的範圍為[-127, +127], 而使用補碼錶示的範圍為[-128, 127].

資料型別位元組數和取值範圍

理解java記憶體處理

總結:

  1. 定義一個區域性變數的時候,java虛擬機器就會在棧中為其分配記憶體空間,區域性變數的基本資料型別和引用儲存於棧中,引用的物件實體儲存於堆中。因為它們屬於方法中的變數,生命週期隨方法而結束。
  2. 成員變數全部儲存與堆中(包括基本資料型別,引用和引用的物件實體),因為它們屬於類,類物件終究是要被new出來使用的。當堆中物件的作用域結束的時候,這部分記憶體也不會立刻被回收,而是等待系統GC進行回收。

建立字串的兩種方式:

  1. 字面量形式:如:String s = “hello”;
    JVM檢測這個字面量,如果JVM通過字串常量池查詢不到內容為hello的字串物件存在,那麼會建立這個字串物件,然後將剛建立的物件的引用放入到字串常量池中,並且將引用返回給變數s。如果發現內容為“hello”的字串存在字串常量池中,那麼直接將已經存在的字串引用返回給變數s。
  2. 使用new建立:如:String s = new String(“hello”);
    new建立字串時首先檢視池中是否有相同值的字串,如果有,則拷貝一份到堆中,然後返回堆中的地址;如果池中沒有,則在堆中建立一份,然後返回堆中的地址(注意,此時不需要從堆中複製到池中,否則導致浪費池的空間)

一:==和equals區別

總結來說:
1、對於==,如果作用於基本資料型別的變數,則直接比較其儲存的 “值”是否相等;
如果作用於引用型別的變數,則比較的是所指向的物件的地址

2、對於equals方法,注意:equals方法不能作用於基本資料型別的變數
如果沒有對equals方法進行重寫,則比較的是引用型別的變數所指向的物件的地址;
諸如String、Date等類對equals方法進行了重寫的話,比較的是所指向的物件的內容。

二:try catch finally return 執行順序

總結:return語句並不是函式的最終出口,如果有finally語句,這在return之後還會執行finally(return的值會暫存在棧裡面,等待finally執行後再返回)