Java基礎筆記(3) 進位與進位轉換

來源:互聯網
上載者:User

標籤:網線   意思   進階語言   系統   模式   hex   電信   strong   資料連結層   

---恢複內容開始---

進位

   在一般生活中,我們一直在應用的十進位,就是逢十進一,而今天我們要接觸的是,電腦編程常用的進位!首先我們要知道,電腦內部運算採用的是二進位,也就是逢二進位!

1.什麼是二進位?

    就是只有0 和 1  每當遇到值為2 就向前進一位。

2.為什麼電腦內部是二進位?

    這就要從硬體說起,電腦是如何儲存資料的,要知道我們網路傳輸,就是你要和別人一起聊天,你們隔著很遠,到底是怎樣才能讓他收到你的聊天內容? 有一根網線還能說過去,畢竟網線連結終端我們也不知道連到哪,保不齊就是全世界都是用網線連結。但是無線時候為什麼還是可以聊天內容又是怎麼算的?

    附:我們網路傳輸主要是更具我們電腦從應用程式層到物理層硬體裝置,物理層將資料連結層資料幀轉換為傳輸介質相應的訊號形式,如光訊號、電磁波訊號等然後由路由器通訊,只要不是同一個網路,我們傳輸都要依靠路由。在這樣說就扯遠了,簡單地說,我們電腦為什麼要用二進位,到底和上面的有什麼關係?正是因為我們用的的是電和光傳播資料,那麼在硬體裝置要識別這些電和光傳輸的是什麼是很麻煩的,比如給他弄個什麼形狀是代表什麼,這太複雜而且傳輸太不穩定一開始就被淘汰這種想法,到後來那些大神們就規定 波長呈升型表示1 波長呈降型就表示0 平行表示不變,因為就只有這兩種形態,所以使用二進位最合適,所以電腦內部是二進位!

注意:在我們JAVA教程一般講的是我們電腦傳輸電訊號開就是1 關就是0這是一種形象的說法。畢竟我們瞭解二進位而他具體是怎麼實現計數的沒多大必須性。

那麼就來簡單類比一下JAVA教程最常讓我們理解的一種方式

看圖片 ,通電狀態標識1 不同電錶示0.

綜上所述,你只要簡單明白:這是由電腦的工作原理決定的,電腦進行運算實際是靠的電路,電路的邏輯只有0和1兩個狀態,這裡的0和1並不是數位0和1,0和1是表示兩種不同的狀態,0表示低電平,1表示高電平。因為電腦是由無數個邏輯電路組成的,只能根據0和1的無限位元和組合來表達資訊。所以二進位是最接近電腦工作模式的,也是電腦直接能讀懂的,其他進階語言都需要轉義成機器語言。

 

 

我們要學習的不是電腦怎麼去採集電訊號和光訊號,而是知道電腦常用的進位:1.十進位 2.二進位 3.八進位 4十六進位

1.十進位逢十進一位 也就是 1 2 3 4 5 6 7 8 9  到了十 怎麼表示的 就是10 他就進了以為

2.二進位逢二進一位 也就是 0 1 到了2的時候 他也僅為 10 在二進位這個表示2不是10哦

3.八進位逢八進一位 也就是 0 1 2 3 4 5 6 7 到了8的時候,他就進一位 10 表示 十進位的8

4.十六進位逢十六進位 也就是 0 1 2 3 4 5 6 7 8 9 A(10) B(11) C(12) D(13) E(14) F(15) 6不6 數字不夠,字母湊。

 

知道這些進位有什麼用,不知道你有沒有這個疑問?為什麼要學習它?

目前在我們後面要學會資料類型和位元運算都是需要進位的知識,具體是進位哪方面的知識呢?就是即將要講的 進位轉換!

進位轉換:就是這些進位之間的互相轉化,電腦內部計算是二進位,那麼到底我們開啟系統的電腦,他是什麼原理,讓我們可以進行十進位運算?是怎麼做到的,這個是今天的主要針對內容!

看不懂八進位和十六進位沒關係,先嘗試去理解意思,其他具體數字轉換得值可以忽略,等看了十進位轉二進位再回頭來看一遍!

首先我們要知道的是八進位:

八進位的特點是逢八進一位。那麼來看下面這一段位元:0111     開啟電腦,選擇程式員類型。(不會選自己百度)

BIN:二進位  HEX:十六進位  OCT:八進位 DEC:十進位!

沒錯這個數字表示7。

在哪我們在看一個位元:1000

注意看:OCT寫的是不是 10  是不是向前進了一位?

所以八進位我們用二進位一般這樣去轉換   三個二進位位表示八進位的一位!

十六進位同理,我就不用電腦了,直接給你寫出來 

二進位轉十六進位:

因為二進位1111 表是的就是15  而十六進位是16進一,所以二進位轉十六進位是 四個二進位位表示十六進位一位。

那麼明白了這點,我們來做幾個練習題:

00010001  計算出他的十六進位和八進位

二進位:  000010001

八進位: 000 010 001 

最終答案:0    2      1     所以是:21  

臥槽,怎麼搞的這個數難道是21 我怎麼用電腦計算出的21並不是這個答案,於是開始慌了!

這是一個用對進位不熟悉造成的,注意我們求得是二進位對八進位,我們別看DEC這個是十進位。如果你和我一樣是WIN10首先要去點擊OCT然後在看BIN是多少

沒毛病吧! 然後我們通過這個轉換還明白了一個點記住:進位不會我們就用電腦轉唄,反正又不是常用,演算法能記就記,記不住我們就用電腦,實在想找演算法就百度唄!

 

 

好了八進位是沒毛病了,我們再看十六進位例子:

BIN:00010001

HEX:0001  0001 

轉換:11

明吧了吧,就是把二進位轉分割然後分別計算出他們的值,這樣能達到快速轉換!

 

十進位轉二進位:

   看了上面的轉換估計有一個疑問  0001你怎麼就知道是1 ? 這不亂講麼,我都不知道為什麼0001是 1額。別急,學了十進位轉二進位,不管多少進位你瞬間就能明白了!

  首先學十進位轉二進位 我們用最原始的運算式來學習:十進位轉二進位就是一直用十進位除以2,出盡後最後是1則最後一位是1 如果出盡最後一位則是0,從下往上排列!注意這個原始演算法對於十六進位和八進位都是通用的,最主要的是八進位和十六進位,要分割 比如十六進位 2F 兩位元,要知道一位十六進位表示的是  0000 四個個二進位位 所以 分別用來除以2 然後按照位置前後組合得到的0和1  八進位也是同理,八進位是三個位,就這裡和十六進位不同,按三個位分!

         例:我們現在要將10轉換為2進位

解析:就是一直除以2 在第一次10/2=5 沒有餘數,所以此位置就是0  然後在得的數5 再除以2  5/2=2%1 所以此位置是1  得到2,此時2/2=1 所以最終答案:1010

此時我們在做兩個例子

將十進位25轉換成位元:             2 | 25        1                ------             2 | 12        0                ------              2  | 6       0                  ----               2 | 3       1                         ------                   1             從下往上排列就是位元:11001 

那麼學了十進位,那麼十進位轉二進位怎麼算呢?整數二進位用數值乘以2的冪次依次相加,小數二進位用數值乘以2的負冪次然後依次相加!

舉個例子: 0101 轉 十進位 

這就是進位轉換,如果你是新手,來看我資料,估計我這個資料有點針對我個人寫的,那麼我給你找幾個文章學習進位轉換:

http://jingyan.baidu.com/article/495ba84109665338b30ede98.html

http://www.cnblogs.com/syqlp/p/6586995.html

http://blog.csdn.net/xy2204/article/details/50522075 

二進位快速轉十進位方法:

 

以8位 來示範:

 

1.第一種:

 

   00000001      1

   00000010      2

   00000100      4

   00001000      8

   00010000      16

   00100000      32

   01000000      64

   10000000      128

 

 

2.第二種:

 

  00000001      1

  00000011      3

  00000111      7

  00001111      15

  00011111      31

  00111111      63

  01111111      127

 

 

3.第三種:

 

  10000000     128

  11000000     192

  11100000     224

  11110000     240

  11111000     248

  11111100     252

  11111110     254

 

 

舉個例子:  11101011     

                         可分為:

                         11100000(上面第三種類型)   224

                         00001000(上面第一種類型)   8

                         00000011(上面第二種類型)   3

我們通過記住上面三種類型的轉換,再用加 法(加法口算你會吧)立即得到結果:235

 

 

==================================================================================

 

 

方法二:

 

熟記以下排列,其實很Easy了,從右往 左,依次是前一個數的2倍:

256      128      64       32      16      8        4         2         1

 

隨便寫個數字比如48

48 = 32 + 16,所以在32 和 16所在的位置為1,其餘為0,

轉為2進位就是

256  128  64  32  16  8   4   2   1

0      0       0    1    1   0   0   0   0

 

二進位轉十進位就更簡單了,

比如隨便寫的一串 01111101

先寫上 :  0         1           1         1         1         1          0          1

然後填充 128      64        32       16        8          4          2          1

 

十進位為 64+32+16+8+4+1=125

 

 

 

 看不懂只能自己去看視頻,這邊聽邊講的好學會,用文字這個樣給你說,你本來沒點基礎,我是沒法讓你看懂的!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---恢複內容結束---

Java基礎筆記(3) 進位與進位轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.