二进制那些事儿
?一、為什么采用二進制:
(1)技術實現簡單,計算機是由邏輯電路組成,邏輯電路通常只有兩個狀態,開關的接通與斷開,這兩種狀態正好可以用“1”和“0”表示。(2)簡化運算規則:兩個二進制數和、積運算組合各有三種,運算規則簡單,有利于簡化計算機內部結構,提高運算速度。 (3)適合邏輯運算:邏輯代數是邏輯運算的理論依據,二進制只有兩個數碼,正好與邏輯代數中的“真”和“假”相吻合。 (4)易于進行轉換,二進制與十進制數易于互相轉換。 (5)用二進制表示數據具有抗干擾能力強,可靠性高等優點。因為每位數據只有高低兩個狀態,當受到一定程度的干擾時,仍能可靠地分辨出它是高還是低。 二、二進制的運算 1. 二進制運算規則 加法:0+0=0,0+1=1,1+0=1,1+1=10 減法:0-0=0,1-0=1,1-1=0,10-1=1 乘法:0×0=0,0×1=0,1×0=0,1×1=1 除法:0÷1=0,1÷1=1???????? 例如,((1100))2 + ((0111))2計算如下:
1100 +0111 10011 三、二進制換算 1. 二進制轉換為十進制 十進制是逢十進一,由數字符號0,1,2,3,4,5,6,7,8,9組成,可以這樣分析十進制數:(1234)10 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100 = 1000 + 200 +30 + 4 =(1234)10
采用同樣的方式轉換二進制到十進制。(1101)2 = 1 * 23 + 1 * 22 + 0 * 21 + 1 * 20 = 8 + 4 + 0 + 1 = (13)10
(10.01)2 = 1 * 21 + 0 * 20 + 0 * 2-1 + 1 * 2-2 = 2 + 0 + 0 + 0.25 = (2.25)10
2. 十進制轉換二進制 ⑴ 十進制整數轉換為二進制:方法是除以2取余,逆序排列,以(89)10為例,如下。 89 ÷ 2 余1 44 ÷ 2 余0 22 ÷ 2 余0 11 ÷ 2 余1 5?÷ 2 余1 2?÷ 2 余0 1余1(89)10 = (1011001)2
(5)10 = (101)2 (2)10 = (10)2 十進制轉換為二進制技巧 只能舉例了,文字說不清的,通常將一個十進制數的整數部分和小數部分分開處理。 1、整數的數制轉換; ——采用“基數除法”,具體步驟如下: (1)將給定的十進制整數除以基數2,余數便是等值的二進制的最低位。 (2)將上一步的商再除以基數2,余數便是等值的二進制數的次低位。 (3)重復步驟2,直到最后所得的商等于0為止。各次除得的余數,便是二進制各位的數,最后一次的余數是最高位 二進制與八進制十六進制轉換技巧 二進制從最低位開始每三位轉換為十進制即為其對應八進制 高位不足三位,補零 同理二進制從最低位開始每四位轉換為十進制即為其對應十六進制 高位不足四位,補零 如(1001100)2=(114)8=(4C)16 八進制轉換十進制 八進制就是逢8進1。 八進制數采用 0~7這八數來表達一個數。 八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方…… 所以,設有一個八進制數:1507,轉換為十進制為: 用豎式表示: 1507換算成十進制。第0位 7 x 8^0 = 7
第1位 0 x 8^1 = 0
第2位 5 x 8^2 = 320
第3位 1 x 8^3 = 512
-------------------------- (1507)O=(839)D 同樣,我們也可以用橫式直接計算:7 X 8^0 + 0 X 8^1 + 5 X 8^2 + 1 x 8^3 = (839)D
結果是,八進制數1507 轉換成十進制數為 839
十六進制轉換為十進制 (ABC.8C)H=10x16^2+11x16^1+12x16^0+8x16^-1+12x16^-2 =2560+176+12+0.5+0.046875 =(2748.546875)D 十進制轉換為二進制、八進制、十六進制 1.整數部分除R取余 例:(125)D=(1111101)B 注:余數中最后得到的余數為最高位,最先得到的余數為最低位,從高到低依次排列。 2.小數部分乘R取整 例:(0.25)D 0.25 X 2 _______________ 0.50 (整數部分0為高位) X 2 ↓_______________ ↓
1.00 (整數部分1為低位) (0.25)D=(0.01)B 注:整數的轉換是精確的,小數的轉換可能出現無窮小數或循環小數的情況。此時需要進行舍入處理以截斷,所以小數的轉換可能略有偏差。箭頭表示由高位到低位的趨勢。轉載于:https://blog.51cto.com/86612/705181
總結
- 上一篇: 在Linux服务器之间迁移帐号信息
- 下一篇: va_list用法