最開始我寫的是:
return num%2 ==1;
但發現好像忘了負數...
所以改為了:
return num%2 != 0;
我以為這就解決了問題,但我習慣性檢視答案時,卻發現答案用了乙個奇怪的方法:
return (i&1) == 1;
???,這是啥東西,冷靜下來想了一會,哦哦哦...
答案是直接當做二進位制進行了運算,因為二進位制狀態下,技術的最後一位必然為1,所以只要通過與運算子和1運算,奇數因為最後一位是1,所以結果也是1,而偶數最後一位是0,所以結果也是0。
return i>>1<<1 ! = i;
其實這個原理其實非常簡單,奇數的二進位制最後一位一定是1,因此先右移使其丟失最後一位,再左移補上最後一位,目的是讓最後一位丟失,這樣對偶數不會產生影響,因為偶數最後一位永遠是0,而奇數會被刪除掉1變為0,所以和原數不再相等。
但我認為,在**中如果沒有特殊需要,還是不要使用位運算,主要是**並不是自己看就行了,還要給後來人留條生路,如果業務需要必須使用位運算,那麼注釋一定要完善,至少能讓人明白這是在幹什麼! 但出於學習而言,hashmap原始碼中非常多的地方用到了這種位運算,比如擴容中就有位運算的例子,這說明位運算在底層還是比較常見的,即使用不上也要加以了解!
判斷乙個數是否為回文數
問題描述 輸入乙個數值判斷是否為回文數 回文數是指乙個像12321 123321這樣 對稱 的數 解題思路 將數值的各個位存放在陣列中,若陣列中元素左右對稱,則為回文數,反之不是 設定 left 陣列最左邊下標 right 陣列最右邊下標 首先判斷第乙個和最後乙個數值是否相等,若相等,left ri...
判斷乙個數是否為回文數
判斷乙個數字是否位回文,不能使用額外的空間。負數可能是回文嗎?123321 最簡單的就是轉換成字串,然後判斷。但是本題要求不使用額外的空間 你也可以考慮將數字反轉,但是這樣的話,好像很容易溢位哦 所以,這裡肯定有乙個好辦法。希望你能夠想出來哦 格式 輸入有若干行,每一行輸入對應一行輸出,直到遇到終止...
判斷乙個數是否為回文數
首先先寫了乙個判斷5位數是否為回文數 define crt secure no warnings include includeint main 判斷是否為回文數 if num 0 num 4 num 1 num 3 else system pause return 0 然後進一步擴充套件將5位數改...