Android學習之---(重回Java(02))進制的學習及進制間的轉換

進制!!!

可能你會好奇,爲什麼要添加這麼多感嘆號呢?其實學了程序這麼長時間,本編卻連進制都一竅不通,我相信應該也不止我一個人,那麼這次我們既然開始了重回Java也應該來補習一下這個知識點,可不要被下放的一大堆文字嚇到了,講的已經很通俗了,純手打,值得一看哦~~~

進制
生活中的計數方式有很多種,比如說星期是7位計數,月是12位,這都是一種計數方式,進制就是演變回來的
那麼進制的由來呢,我們偏計算機來說這件事就是:大家早期應該都聽說過電信號,電信號很簡單就是開關開關開關這兩種狀態,那麼這個電信號我們通過幾個開和幾個關就能形成一組數據,比如說:開開關開,開關開開,那麼通過這些個排列組合,就形成了數據的表現形式,那麼這個開關開關用數字來表現就是0和1,0關1開,那麼通過0和1不斷的排列組合就形成了一些數據,那麼計算機也是通過各種不同的開關組合表示了各種各樣的數據這就是進制,在內存當中我們可以用數字來表示這些開關,這些數字就是1和0,那麼1和0的不同排列組合也會代表一些數據,這個二進制的產生要表示一些數據它有一個基本的規則就是,它由8位或者說8個開關來表示一個最小的單位,叫做字節
十進制:0-9,滿10進1
八進制:0-7,滿8進1,用0開頭表示
十六進制:0-9,A-F,滿16進1,用0x開頭表示


那麼大家會發現,當我們想用2進制來表示數據的時候會很痛苦,我們用開關開關1010這些東西寫起來很麻煩,那麼早期的那些老美有一個想法,我們能不能讓計算機識別那些生活中的事呢,於是他們想了一個辦法,他們用1010的那些組合來代表生活中的一些事,比如01011010來代表 A 緊跟着 01110010就代表B它就用這些排列組合把生活中的數據給表示出來了,當我們按鍵盤A的時候就代表01011010了,後來能表示的東西越來越多的時候,後來就出現了編碼表,比如老美所使用的編碼表我們稱之爲ASCII編碼表,老美爲了表示生活中的一些文字,那麼他們就用一些2進制的數據1010來進行一個映射對應,1個文字就對應1010不同的排列組合,最後就形成了編碼表,計算機識別中文也是一樣,中國這幫哥們也是把這些1010排列組合來代表每一箇中文字


時間長了人們發現,以2進制8位來表示一段數據這種表現形式太長了,我們能不能把它們縮短呢?於是人們便想了一個方法,於是便出現了8進制、10進制、16進制,例如16進制就是4位代表一位,8進制就是3位代表一位,如此一來,表示數據就越來越簡單了,結論:進制越大,數字的表示越短。例如:隨便一個2進制,101010001110這個數對應的八進制就是5216,對應的十進制就是2702,對應的十六進制就是A8E,這裏同學們是不是發現了它越來越短了,這就是進制轉換的特點,之所以出現8進制、16進制就是爲了更方便的表示數據,到此爲止,一個數字的表現形式有4中表現形式,二進制、八進制、十進制、十六進制,而且計算機裏面無論是什麼數據,全是二進制


二進制和十進制之間的轉換
十進制—>二進制。6的二進制
原理:對十進制數進行除2運算
如圖:在這裏插入圖片描述
所以結果就是110
不過這種東西大家可以看懂就行,不需要非得自己算,畢竟整天算這個能把自己累壞,Java已經提供了對應的方法能夠進行這種運算


二進制—>十進制
原理:二進制乘以2的過程。
拿上面的110來說
根據原理可得:0×2(0)+1×2(1)+1×2(2)
0乘以2的0次冪爲0,1乘以2的1次冪爲2,1乘以2的2次冪爲4,其結果就是0+2+4=6
注:括號中的次冪是依次往後排的,假如說1110這個二進制的話那就應該是0×2(0)+1×2(1)+1×2(2)+1×2(3),0+2+4+8它的十進制也就是14
再來一個數值比較多的
在這裏插入圖片描述
如圖,上面的00110101就是二進制,如果直接按照上面的方式算的話太麻煩了,這裏有個簡單方法,從最後一個1開始,它下面所對應的那一排就是那樣的規律,最終,按照上面和下面相乘再將結果相加,也就是說1×1+0×2+1×4+0×8+1×16+1×32+0×64+0×128=所以對應的十進制就是53,
其實上面那個圖,你會發現如果上面的二進制都是1,結果也就是下面的所有數相加你會發現結果是255,同樣你也會發現電腦的ip地址最大的數也只能輸入255
二進制的加法運算:在這裏插入圖片描述


二進制轉16進制
01011010轉爲16進制
前面說過16進制是以4爲單位,這邊咱們爲了便於觀看學習將它們分開
0101-1010,由此可得
4 1-8 2 ,上面是0的都忽略掉了,因爲0乘以任何都爲0,這裏8+2等於10,但是因爲16進制中沒有10的概念而對應的是A,所以結果就是5A,又因爲16進制的前綴是0x,所以結果爲0x5A


二進制轉8進制
01011010轉換爲8進制
由於8進制是以3爲位代表1位所以分開應該是01-011-010,因爲咱們要從後面開始分割爲3位,所以前面就剩下01了不滿3位,當然如果你開心可以前面添個0,因爲0乘以任何都爲0,這裏結果就更簡單了
001-011-010
1- 21- 2 ,結果是132


負數的二進制表現形式
前面說過6對應的二進制是110
那麼-6應該是什麼呢,其實就是6的二進制取反+1,具體呢?請看下面:
因爲6是一個整數,那麼這一個整數你要知道的基本的一點是它其實佔了4個字節,它在內存當中其實不是110,而是這樣的
0000-0000 0000-0000 0000-0000 0000-0110,因爲電腦又32位這個概念,然後再取反也就是1變0,0變1

1111-1111 1111-1111 1111-1111 1111-1001,再+1,二進制的1如下
0000-0000 0000-0000 0000-0000 0000-0001,相加後
1111-1111 1111-1111 1111-1111 1111-1010,爲什麼最後是1010了呢?因爲滿2進1,如此便是-6的表現形式

其實計算起來還挺麻煩,在工作中也沒有人去整天計算這玩意,因爲Java中提供了對應的方法進行轉換,很簡單,大家自行百度即可,雖然工作中不常用,但是大家也應該對其有一定的瞭解,當然,大家有什麼意見或建議可以在下方進行留言,感謝支持~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章