計算機基礎:2進制和2進制算法。


計算機底層語言就是2進制。2進制世界里不是0就是1。而平常我們用的數字或者計算都是十進制的。所以這里說一下二進制,以供大家參考。

  (1)二進制和十進制。

      大家都知道十進制是滿十進一,舉個例子9+1=10;89+1=90;(這個大家當然都知道)。

      二進制和十進制這個地方也是相似的,是滿2進1,舉例子:01+1=10;11+1=100;。。。

  (2)二進制轉化為十進制

      而二進制轉化為十進制很好理解,如:二進制1011轉化為十進制為15;(這里的符號位先忽略)也就是

      ana(n-1)a(n-2).....a3a2a1(二進制)=an2^(n-1)+a(n-1)2^(n-2)+a(n-2)2^(n-3)....a32^(2)+a22^(1)+a12^(0)(十進制);

      就是2^(二進制的位數-1)乘以位數上的值  的總和就是轉化為的十進制。

  (3)十進制轉化為二進制(整數)

      十進制整數轉二進制數:除以2取余,逆序排列。

       
      89÷2 ……1
      44÷2 ……0
      22÷2 ……0
      11÷2 ……1
      5÷2 ……1
      2÷2 ……0
      1

   (4)二進制的加減乘除

      “+”:有四種情況:0+1=1;1+1=10;1+0=1;0+0=0;也就是逢2進1。

      

      “-”:0-0=0;1-0=1;10-1=01;1-1=0;不滿借一

      “*”:0*0=0;1*0=0;0*1=0;1*1=1;

      “/”:0/1=0;1/1=1;

  (5)二進制的原碼,反碼,補碼。

      原碼就是:十進制數轉換成二進制變成的二進制數或者可以說待處理的二進制數都可一說成原碼。  

      反碼:就是原碼所有取反(1變0,0變1);

      補碼:就是反碼加一。(補碼就是負數在計算機中的二進制表示方法,求補碼的十進制就是:補碼減一取反加負號)。

  (6)二進制運算符

      “&”(按位與):1&1=1;1&0=0&1=0&0=0(數的對應位均為1,則為1;反之,則為0)。

        例:

      “|”(按位或):1|0=0|1=1|1=1;0|0=0(數的對應位只要有1,則為1;反之,則為0)。

      “^”(按位異或):1^1=0^0=0;0^1=1^0=1;(相同異或為0;不同異或為1)。

      “~”(按位取反):~1=0;~0=1;(1變0,0變1,並且符號位參與運算就是正數取反是負數,負數取反是正數)。

      “<<”(按位左移):c=a<<b;(a左移b位。右邊補0)

      “>>”(有符號的右移):c=a>>b;(a右移b位,左邊補符號位。注意:負數以原碼參與運算)。

       “>>>”(無符號的右移):c=a>>>b;(a右移b位。左邊補0。注意:所有數據以無符號的方式參與運算)。

 關於Java的二進制一些小命令:Integer.toBinaryString(a);(把a值轉換為2進制)

               Integer.valueOf("a", 2);(把2進制的a轉換為int值)

(平常其他進制用的也不多,所以8進制、16進制和其他暫且不討論)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM