JAVA-二進位基礎

2020-12-17 淚流雲

一、二進位的概念

計算機進位有:二進位、八進位、十六進位

進位的基本特點是:每一位置上的數字必須在0-(進位-1)的範圍內,也就是說二進位只能有0、1;八進位為:0-7;十六進位比較特殊為:0-9,A(10) B(11) C(12) D(13) E(14) F(15)

進位轉換:

1、非十進位轉換十進位:每位數字乘以進位數的權重次方,將所有位置上的結果進行求和即可。

進位的權重:一個數值,在每一位都有一個權重,權重為從右向左數,位數-1

進行轉化: 舉例:將二進位011轉10進位為:從右向左,1*2的0次方+1*2的1一次方+0*2的2次方=3; 將八進位34轉化成10進位:4*8的0次方+3*8的1次方=28

2、十進位轉非十進位: 採用短除法: 用十進位數除以要轉化的進位數,用本次除法的商繼續進行除以要轉化的進位數的除法運算,一直到商為0,保留每次除法的餘數,將餘數按照從後往前進行排序,即為最終轉化後的數。

舉例:將10進位100轉化成八進位數: 十進位 100: 100/8(進位數) 商:12 餘數 4 繼續用上次的商12除以8:12/8 商:1 餘數 4 繼續用上次的商1除以8:1/8 商:0 餘數 1 商為0,停止運算,將餘數從後往前排序:144 得到最終轉化後的八進位為144。 十進位轉十六進位同理

二、位運算

優點:

(1)特定情況下,計算方便,速度快,被支持面廣

(2)如果用算數方法,速度慢,邏輯複雜

2.1、按位與&

兩位全為一,結果才為1

0&0=0;0&1=0;1&0=0;1&1=1;

用法:

(1)清零,如果想要將一個單元清零,即使其全部二進位位0,只要與一個各位都為零的數值相與,結果位零

(2)取一個數中指定位,找一個數,對應X要取的位,該數的對應位為1,其餘為零,此數與X進行「與運算」可以得到X中的指定位

2.2、按位或|

只要有一個為1,結果就為1

0|0=0;1|0=1;0|1=1;1|1=1;

用法:常用來對一個數據的某些位置設為1,找到一個數,對應X要設置為1的位,該數的對應位為1,其餘位為零,此數與X想與可使X中某些位設置為1

2.3、異或運算^

兩個相應位為「異」(值不同),則改位結果為1,否則為0

0^0=0;0^1=1;1^0=1;1^1=0;

用法:

(1)使特定位翻轉 找一個數,對應X要翻轉的各位,該數的對應位為1,其餘位為0,此數與X對應位異或即可

(2)與0相異或,保留原值

兩個變量交換值

(1)藉助第三個變量來實現

(2)利用加減法實現兩個變量的交換

A=A+B;B=A-B;B=A-B

(3)異或運算

任意一個變量X與其自身進行異或運算,結果為0

A=A^B;B=A^B;A=A^B

2.4、取反運算~

對一個二進位數按位取反,即將0變1,1變0

~1=0;~0=1;

2.5、左移運算<<

將一個運算對象的各二進位位全部左移若干位(左邊的二進位位丟棄,右邊補0)

2<<1=4

若左移時捨棄的最高位不包含1,則每左移一位,相當於該數乘以2

2.6、右移運算>>

將一個數的二進位位全部右移若干位。正數左補0,負數左補1,右邊丟棄。 每右移1位,相當於除以2.

左補0還是1得看被移數是正還是負

2.7、無符號右移運算>>>

各位向右移動指定位數。右移後的左邊空出位用0補。右邊的位被丟棄。 與>>的不同。 >>>不管正數負數。左邊只會補0; >>正數補0,負數補1

2.8、示例

原碼:一個整數按照絕對值大小轉換成的二進位數稱為原碼

反碼:將二進位數按位取反,取得的新二進位數稱為原二進位數的反碼。

補碼:反碼加1稱為補碼

三、JDK內置的進位轉換

四、JAVA中的進位

JAVA中二進位用的多嗎?平時開發中「進位轉換」和「位操作」用的不多,Java處理的是高層;在跨平臺中用的較多,如:文件讀寫,數據通信(客戶機(java)——0.1進位——伺服器(C))。

基本類型:int型數據類型:byte(8bit -128~127)1 short(16bit)2 int(32bit)4 long(64bit)8位元組float數據類型:單精度(32bit float)4位元組 雙精度(64bit double)boolean類型變量的取值:true false 1bitchar數據類型:Unicode字符,16位 2位元組對應的類類型:Byte Short Integer Long Float Double Boolean Character

數據類型轉換字節:1.大小端:

小端法:低位字節排放在內存的低地址端即該值的起始地址,高位字節排放在內存的高地址端大端法:高位字節排放在內存的低地址端即該位置的起始地址,低位字節排放在內存的高地址端2.字符串->字節數組:String s ; byte [] bs = s.getBytes();字節數組->字符串:byte[] bs = new byte[int]; String s = new String(bs); 或String s = new String(bs,encode); //encode指編碼方式:gb2312, utf8

相關焦點

  • 跟我學java編程—不得不說的二進位和十六進位
    計算機能夠識別的數制是二進位數,二進位數是用0和1兩個數字來表示的數,計算機的指令集也是採用二進位表示,機器語言就是用二進位數編寫程序。可以藉助十進位數來理解二進位數。在十進位中,每一位有0、1、2、3、4、5、6、7、8、9十個數碼,因此基數為10,超過9就必須用多位數來表示,並遵循逢十進一的原則。
  • 二進位小總結
    計算機中通過高低電平表示1或者0,這樣就可以表示一個二進位的數值。一個1或者0表示的數值位稱為一個bit,而計算機中存儲和傳輸數據的最小單位是一個字節(byte)也就是8個bit,所以說計算機所有計算本質上都是基於二進位。在計算機中,我們可以使用1個或者多個字節存儲一個數,但無論是多少個字節,其大小肯定是固定的,同時其所能表示的數值的範圍也是固定的。
  • 嵌入式,單片機編程基礎-二進位
    涉及到比特位當然以二進位表示最為自然。其次,我們在編寫或閱讀底層代碼時,如果涉及到寄存器的配置或是有關比特位的操作也是離不開二進位的影子。那就來介紹下一些比較常用的的有關二進位的東西。二進位的表示方法。比如我們要給一個char型變量a賦值一個二進位數100。如果我們寫成a=100,那麼a就是100。
  • 跟我學java編程—認識java的整數類型
    因此整型類型的數據能夠表示的最小值為:-2n-1 —2n-1-1(n為該類型所佔存儲空間的二進位位數)。其中,byte佔用一個字節的存儲空間,可表示的最小數值為-128,最大數值為127;short佔用二個字節的存儲空間,可表示的最小數值為-32768,最大數值為32767;int佔用四個字節的存儲空間,可表示的最小數值為-2147483648,最大數值為2147483647;
  • 二進位的前身是八卦?一起走進10000000000的世界
    從事程式設計師工作的人有很多,大體上有十幾種,每一種工作內容都有不同:C程式設計師、C++程式設計師、Python程式設計師、vb程式設計師、java程式設計師......進一】了解一下二進位、十進位吧!二進位和中國八卦算法一樣?印象中,二進位服務於電腦,電腦將二進位變得家喻戶曉。
  • Java進位轉換的幾個方法
    無論是常規的10轉2、8、16進位,還是2、8、16轉10進位的方法都被封裝在Integer對象中。例如:十進位轉成十六進位: Integer.toHexString(int i) 十進位轉成八進位 Integer.toOctalString(int
  • JAVA基礎學習|JAVA中的包總結!
    該包提供了Java語言進行程序設計的基礎類,它是默認導入的包。該包裡面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable類需要重點掌握,因為它們應用很廣。
  • scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)
    也就說滿十進一;而在計算機的世界裡,基礎電路只有「開/關(通/斷)」(即0/1)兩種情況,這與誕生幾千年的二進位不謀而合;例如:二進位數字110,表達的就是十進位中的6;二進位數字1111,表達的就是十進位中的15。
  • 零基礎學編程之進位轉換基礎
    十進位和二進位可以相互轉換,如下所示:計算機使用二進位,是因為計算機設計者發現在複雜電路中,將低電平表示0,高電平表示1,只有兩種電位在通過門電路之後更容易計算。其實用其它進位也可以表示,但是比較麻煩。二進位的基數為2,權為2^n(2的n次方),……、128、64、32、16、8、4、2 1。
  • 二進位轉換為十進位和十進位轉換為二進位的方法
    各位小夥伴們大家好,在之前的文章中小編也介紹了關於二進位轉十進位的方法,這次小編知道了一個更簡單的方法,具體如下:比如我們要把28轉為二進位:28轉換為2進位先用2的n次方來表示28這個數,然後用2的n次方乘以1或者乘以0,相加來湊成與之相等的數,得到的1或者是0,根據這個表格,從左往右把二進位數字湊在一起,11100就是
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。{int num;char a[39];//定義一個字符數組,用於存儲字符串cout<<"Entre num:"<<endl;cin>>num;cout<<"二進位
  • 二進位、八進位、十六進位在現實當中有什麼意義?
    二進位二進位的出現是創歷史性的,在古代就有兩儀生四象,四象生八卦,八卦生萬物的說法,世間萬事萬物至少都有兩個狀態,比如生存/死亡、開/關、好/壞、高/低、大/小、長/短、胖/瘦等,這兩個狀態就可以使用二進位的0和1來表示。如今二進位主要運用於電子技術的數字電路當中,就比如計算機,最直接能夠識別的語言就是二進位語言。
  • 計算機基礎,二進位與十進位的轉換和示例!
    2、二進位字符串轉十進位的思路 把二進位字符串從最高位(左邊第一位)開始用商乘以2再加餘數(該位的數字),如此循環,左邊第一位的商肯定是0。 char result[65]; // 十進位轉換成二進位後,保存在result中,再反過來存放到pbin中。 memset(result,0,sizeof(result)); // 把十進位轉換為二進位,存放在result中。
  • JAVA 基礎:JAVA開發環境搭建
    打開Path變量,在變量值最前加入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(方法同上)4.驗證:運行cmd,輸入java -version,顯示java版本則成功。二、在Linux上安裝jdk下載jdk安裝包,使用wget命令或將安裝包ftp到伺服器上安裝目錄示例在/var/local下;3.進入 jdk1.8.0_181目錄下,輸入命令
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    (1)十進位轉換為八進位 十進位轉換成八進位有兩種方法: 1)間接法:先將十進位轉換成二進位,然後將二進位又轉換成八進位 2)直接法:前面我們講過,八進位是由二進位衍生而來的,因此我們可以採用與十進位轉換為二進位相類似的方法,還是整數部分的轉換和小數部分的轉換
  • 如何實現二進位轉十進位的設計
    設計背景: 二進位轉十進位在設計應用中十分的廣泛。尤其在AD轉化中是必須所用到的一個小知識點,學習二進位轉十進位的方法顯的非常的重要。今天就和筆者來學習二進位轉十進位的方法,通過簡單的學習來掌握這麼一門知識。
  • C語言基礎:二進位和計算機語言雜談(編程新手福利)
    密密麻麻的二進位正因為用電壓的高低可以穩定的表示開和關,所以計算機在計算機中只有兩個狀態來傳遞信息,一個高電平,一個低電平,在計算機中,用1表示高電平,用0表示低電平。二進位文件我們現實生活中用的是的十進位,就是只有0到9這十個數字,計算機只有0和1,它如何表示各種各樣的數字呢,這個時候,人們就定製了一個規則,就說這個規則全世界的計算機都要符合它
  • Google 的二進位和十六進位搜索彩蛋
    當你搜索Hexadecimal(十六進位)或Binary(二進位)的時候,Google會用相應的十六進位和二進位來告訴你找到了多少搜索結果(如上圖)。聰明的你可以算出0b1101111011000111010000000和0xfbc520分別代表十進位裡的多少嗎?
  • 你可能不知道,二進位比十進位更簡單
    目前除了十進位,二進位、八進位、十六進位也比較常見,其中二進位是計算機技術中廣泛採用的數制。如果問十進位和二進位哪個簡單?大多數人可能會覺得十進位簡單,畢竟在小學時學的就是十進位。可事實未必是十進位簡單。有數學家曾說過「二進位是如此的簡單,即使是電腦也能明白」。
  • 零基礎學Java之數據類型和運算符,第一講:進位及其轉換
    1.1 進位類型十進位:人類使用二進位:計算機使用八進位和十六進位:為了更好的表示二進位(縮短二進位長度)各進位數之間的關係二進位,是計算技術中廣泛採用的一種數制,由德國數理哲學大師萊布尼茨於1679年發明。二進位數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」。數字計算機只能識別和處理由『0』.『1』符號串組成的代碼。其運算模式正是二進位。