由最快判斷整數奇偶法的聯想 快速求餘

2021-08-23 13:37:59 字數 585 閱讀 6872

在傳統上我們判斷乙個整數的奇偶性都是用模2的方法。此方法準確無誤,但不是最快的方法。現在我們討論整數的二進位制存法。

假設乙個數a,它由8個二進位制來儲存。如下:

a=a0a1a2a3a4a5a6a7;

a=2^7*a0+2^6*a1+2^5*a2+2^4*a3+2^3*a4+2^2*a5+2*a6+a7;

我們很容易的發現2^n都是2的倍數。

在對a求模時只剩下a7了,而判斷整數的奇偶性我們只需要得到a7這個數就行了。

所以有a%2=a&1.

為運算要比模2運算快得多。

接下來我們討論求一些特殊數的餘數的快速方法。

繼續看用二進位制表示a的方法:

a=a0a1a2a3a4a5a6a7;

a=2^7*a0+2^6*a1+2^5*a2+2^4*a3+2^3*a4+2^2*a5+2*a6+a7;

我們也很容易的發現2^n*an是2^m*am(m0--m-1的二進位制位。在位與運算中?|0=0,?|1=?(?表示未定數)。

綜上我們可以得到快速求餘的方法:

a%2^n=a&(2^n-1) -----(1);

式(1)就是我們得到的快速求餘的結論。

php整數判斷

在網上看到過這樣三種做法,下面來跟大家討論下,如有問題,歡迎指出,大家共同學習 1,is int來進行判斷 if is int 2.0 else 輸出非整數 一般情況下,是可以判斷出來的,但是如果給出的數字是2.0類似這樣的,這樣的判斷方式就會出現問題,所以這種做法不對 2,floor ceil a...

判斷整數溢位

c語言中存在兩類整數算術運算,有符號運算和無符號運算。在無符號運算裡,沒有了符號位,所以是沒有溢位的概念的。所有的無符號運算都是以2的n次方為模。如果算術運算子的乙個運算元是有符號書,另乙個是無符號數,那麼有符號數 會被轉換為無符號數 表示範圍小的總是被轉換為表示範圍大的 那麼溢位也不會發生。但是,...

判斷整數A B C

注意點 1 要注意資料型別。int表示的範圍是 2 31 2 31 1,所以不能用int,而且a b的範圍可能超過int,所以得用long long。整數範圍速查 char 128 127 1 byte short 32767 32768 2 bytes unsigned short 0 65536...