百分號(%)是求餘操作符。22%5即從22中拿走5,再拿走5...不夠拿走,就餘下了4。**放在:
package semantics.statement;
public class arithmeticopdemo15 / 4.0 = 3.75
15 % 4.0 = 3.0
7 % 2.2 = 0.39999999999999947
雖然15 % 4.0 比較理想,但是7 % 2.2不是我們希望的0.4,解釋起來也麻煩。
如果兩個運算元都是正整數,如同還沒有學過小數的小朋友的計數方式。這是常用的方式,
13/ 5 = 2
13 % 5 = 3
2 % 5 = 2
有奇葩問:13 / 5.0 = 2.6,那麼餘數是不是2.6的小數點後面的6。
我們只能夠說,13 / 5.0 = 2.6,的確13 / 5 = (int)math.floor(13 / 5.0),即2,你在這一步是對的,
那麼,餘數13 % 5 = 13- (13 / 5)*5 = 13-2*5 =3
整數除法遵循規則:
(x/y)*y + x %y == x
x %y = x - (x/y)*y
如果負數參與計算,x/y 的結果很容易理解,可以將符號先寫出來。
pln("-13/ 5 = "+ -13 / 5); // -2
pln("13/ -5 = "+ 13 / -5); // -2
pln("-13/ -5 = "+ -13 / -5); // 2
但是,從x %y = x - (x/y)*y 可知,
-13% 5 = -13 - (-2) *5 = -13+10 = -3
13% -5 = 13 - (-2) *(-5) = 13 -10 = 3
-13%-5 = -13 - 2*(-5) = -13 +10 = -3
雖然不難,但是一會3一會-3,程式猿通常很懶的,不希望搞這種東西。所以,
當%的乙個或兩個運算元是負數時,理解起來並不直觀,因而應避免在負數時使用%。
求餘操作時,0是個好東西,如同c語言中的0. 判斷i是否偶數,使用if(i%2==0);判斷i是否奇數數,不要if(i%2==1) ,因為還有i%2== -1。
例如列印[-1,6]之間的奇數:
static void remainderop()
system.out.println("i =" + i);
}}
i =-1
i =1
i =3
i =5
如果是**
static void remainderop()
}}
i =1
i =3
i =5
java 位操作符
位運算的應用場景 因為位運算的運算效率比直接對數字進行加減乘除高很多,所以當出現以下情景且對運算效率要求較高時,可以考慮使用位運算。情況1 輸入乙個int型的正整數,計算出該int型資料在記憶體中儲存時1的個數。例如輸入5,因為5 的二進位制表示為101,所以輸出為2.解題思路 普通方法是將5轉換成...
Java 移位操作符
左移運算子,按照操作符右側指定的位數將操作符左邊的運算元向左移動 在低位補零 例如 num 1,相當於num乘以2 左移的規則只記住一點 丟棄最高位,0補最低位 運算規則 按二進位制的形式把所有數字向左移動對應的位數,高位移出 捨棄 高低位的空位補0.如果移動的位數超過了該型別的最大位數,編譯器會對...
java位操作符
無符號右移位操作符 在將bit串右移位時,從bit串的最左邊填充0,這和帶符號右移位操作符 不同。在將bit串右移位時,從bit串的最左邊填充原來最左邊的位。也就是說,bit串原來最左邊的位是符號位,如果為1,則在帶符號右移時最左邊始終填充1 如果為0,則在帶符號右移時最左邊始終填充0。移位操作符的...