-5*3=-15 5*-3=-15 -5*-3=15 這三個不解釋了吧。 -5/3=-1 5/-3=-1 -5/-3=1 這三個你這麼理解,5/3=1,而後負負爲正,正負爲負,計算機的運算過程差很少也是這樣。 -5%3=-2 5%-3=-2 -5%-3=-2 這三個也是那麼理解的,首先無論符號,而後5%3=2,而後有負則爲負。 -5&3=3 5&-3=5 -5&-3=-7 這個是按位與,-5二進制是10000101,負數在計算機中是以補碼保存的,補碼是11111011,3是00000011,正數不用存補碼,仍是原碼,按位與以後就是00000011,就是3。 5和-3按這個算法,5原碼是00000101,-3原碼是10000011,補碼是11111101,按位與,00000101,就是5。 -5和-3,都是補碼,-5補碼是11111011,-3補碼是11111101,按位與,結果是11111001,這裏要注意了,這個數的符號位爲1,因此這是一個補碼,要翻譯一下,除符號位不變外,其餘位減1取反,結果是10000111,就是-7。 -5<<3=-40 5<<-3=-1610612736 -5<<-3=1610612736 移位,第一個還好說,-5的補碼是11111011,左移3位,左移的過程後邊是要補兩個數的符號位的與運算的,結果就是11011000,這個數是一個負數,須要轉換一次,除符號位外-1取反,就是10101000,就是-40。 第二個和第三個比較麻煩,我以上給你說的都是按照8位的存儲說的,其實計算機真正是按照32位存儲的,也就是傳說中的32位系統,將來還會有64位系統這一說法,那一個數字就是64位了,好了,如今我們看32位的狀況。5的實際存儲爲32位的00000000000000000000000000000101,以前不提另外的0由於不影響運算結果,如今影響了,就加上。左移-3位,就是右移3位,前邊補1,也就是兩數的符號位求異或的結果,異或說白了仍是負負爲正,正負爲負,這裏補的就是1,結果就是11100000000000000000000000000000,這個數就是-1610612736。