1. 程式人生 > >java中的補碼,

java中的補碼,

1.在計算機系統中,數值一律用二進位制的補碼來儲存的。

2.二進位制的最高位是符號位,0表示正數,1表示負數。

3.正數的值是其本身,負數的值是最高位(符號位)不變,其他的位逐位取反,再加1;

將正的十進位制數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零就OK

比如:-11100;---這個是真值,---我們是以8位的進行出來位數的

原碼:就是轉化正常二進位制的資料,

1. 10011100  ---- (-10011100的原碼)

2. 先得到絕對值的原碼  ----00011100     

 取反+1  -------11100011+1——>11100100

對應我們使用---轉換工具:比如:http://tool.oschina.net/hexconvert/

這些都是不考慮最高位的符號的,---所以我們也不要感到懷疑,(比如:127    -127怎麼轉換成二進位制的時候,沒有什麼變化,只在最前面加的了一個負號(-))

下面是一些概念性的東西:

1. 原碼、反碼、補碼:

(1)在Java中,所有資料的表示方式都是以補碼形式來表示

(2)正數:原碼、反碼、補碼相同

(3)負數:符號位為1,其餘各位是對原碼取反,然後整個數加1

(4)~按位取反(反碼加1稱為補碼。)步驟就是先求出這個數(因為java存的數是補碼)的原碼,然後對原碼取反得到X,這個X就是我們要求的那個數的補的

 

2,在switch語句中,一定要,在美國case選項中,寫不break,不然很容易出現  “貫穿” 的現象發生,,就是case的每個語句都執行,

 

3.邏輯運算中的    與    或  非    這個3個區別

長路與 (&)    a&b    比如這個,這個表示式的左右兩邊都要進行判斷,然後,再進行最終的判斷,

短路與(&&)  a&&b 比如這個,在判斷這個的時候,  只要有一個是false,後面的另外一個判斷都可以不用判斷了,直接就出結果

 

長路或運算(|):將二邊 關係運算的結果都計算出來,再進行判斷。

短路或執行(||) :當運算子號的左邊的關係運算結果是true時,不在進行右邊的關係就是那,直接的結果的結果就是true

非運算:!

 

 

4.static 靜態變數  靜態方法,

5.jdk8的lambda語法的

主要是為了區別,匿名內部類的問題,

這個是舉例了,簡單的例子。

new Runnable(){
    @Override
    public void run() {
        System.out.println("run方法的實現方法");

    }
}.run();


  Runnable r=()->{
      System.out.println("run方法的實現方法");
  };
  r.run();

6.

//    大小寫轉換:ctrl+shift+u
    //ctrl+alt+u---顯示資料結構

7.  java  jdk8的新特性;

  lambda表示式:

一:foreach迴圈:

Stream<People> stream = people.stream();
stream.forEach(people1 -> System.out.println(people1.toString()));

二:過濾器:filter的使用

stream.filter(people1 -> people1.getGender().equals(People.Sex.FEMALE))
.forEach(people2 -> System.out.println("----"+people2.toString()));

三:doublestream;