關於與運算和取餘之間的關係

2021-07-05 20:54:58 字數 805 閱讀 6782

乙個數和3進行與運算,就是對4取餘.

解釋: 和3進行與運算,是取該數2進製形式的最後2位的值,因為3的二進位制形式是(假設該數用1個位元組表示,多個位元組也一樣,這裡為了講述,暫舉1個位元組為例)00000011,最後兩位和1進行與,則把該數最後2位的狀態取出來(和1與的特性,不理解的話複習數字邏輯基礎).如下推導:

隨便舉乙個數255,其二進位制形式是11111111,根據十進位制和二進位制之間的轉換公式,有:

255 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

對其兩邊進行同時對4取餘運算,即

255%4 = 128%4  +  64%4  +  32%4  +  16%4  +  8%4  +  4%4  +  2%4  +  1%4

(第8位)  (第7位)  (第6位)  (第5位) (第4位) (第3位) (第2位) (第1位)

可見第4至第8位得到的結果都會是0,只有低3位待定,而這低3位中,低2位不論怎樣對4取餘都是其原來的值,因為他們肯定比4小,而第3位正好是二進位制中表示十進位制的4所在的位,十進位制數對4取餘取得的是最後剩下比4小的那一部分,那麼也就是說某個數對4取餘取得的就是這個數二進位制形式的低2位,那麼我們只要獲得該數低2位值即可,那麼按照數字邏輯中講述的與運算的特性,我們只要用該數和3即00000011進行與運算即可

推理:明白如上道理,那麼同理1個數和5進行與運算就是對6取餘,和7進行與運算就是對8取餘,依次類推

但此種規律只適合對偶數取餘,對奇數取餘,如3,是要取得剩下的比3小的數,比3小的數在二進位制形式上也是在低2位,但是低2位又能表示3,所以對3取餘就不能簡單地對低2位進行與操作.其他奇數也是如此.

python模運算求餘 取模運算和取餘運算

取模運算和取餘運算 取模運算 modulo operation 和取餘運算 complementation 兩個概念有重疊的部分但又不完全一致。主要的區別在於對負整數進行除法運算時操作不同。取模主要是用於 計算機術語中。取餘則更多是數學概念。模運算在數論和程式設計中 都有著廣泛的應用,從奇偶數的判別...

取餘與位運算

在c風格語言中 比如c,c c 注 排名按出生日期 取餘運算子定義為 但在很久很久以前,cpu採用如下方法計算餘數 注意,該方法 只對2的n次方數系有效 x 2 n 1 首先從求餘數談起,我們知道,計算機中儲存的方式是0和1序列 1 0001 2 0 2 0010 2 1 3 0011 2 1 1 ...

取餘與位運算

在c風格語言中 比如c,c c 注 排名按出生日期 取餘運算子定義為 但在很久很久以前,cpu採用如下方法計算餘數 注意,該方法只對2的n次方數系有效 x 2 n 1 首先從求餘數談起,我們知道,計算機中儲存的方式是0和1序列 1 0001 2 0 2 0010 2 1 3 0011 2 1 1 4...