不用除法實現 13操作 位操作

2021-04-12 16:33:33 字數 991 閱讀 9502

今天上自習了,過幾天就要考試軟體工程了,但是把它複習一偏後就沒有心思上自習了,效率明顯的降低了,我一般對待這種事情的方式是及時終止,揹著書包就回寢室了.

想起前幾天在csdn上看的用位操作實現%13的操作,現在恰好在水木上看了乙個類似的問題,有個演算法,實現簡單,有能夠滿足要求.

描敘:n= ( 8*x + y)  

其中 x = n >> 3 , y = n &ox7 (我想要理解這個並不難,自己好好想吧)

n % 7 = ( 8 * x + y ) % 7 = (7 * x + x + y) % 7 = x + y

不斷的迭代,知道 (x +y) <  n 為止

%13 也是同樣的道理:

#include

"stdio.h

"#include

"stdlib.h

"#define

bitmod  0xf

#define

bit  4

#define

mod 13

intmain()

if( temp 

==mod) temp =0

;printf(

"the number %d mod %d is : %d

",temp1 ,mod, temp);

return0;

} 執行及結果:

please input the source number:70

the number 70 mod 13 is : 5

隨便帖倆段**:

一段是不用迴圈,實現乙個無符號整數的個為交換的程式:

unsigned   bit_reverse( unsigned 

intn)

一段是實現統計乙個無符號整數總公包含的1的位數:

unsigned 

intcount_ones(unsigned 

intn)

自己好好分析一下他們是怎麼實現的把

這也是個思想

實現除法操作

一道演算法題,涉及到了二進位制的位操作,借這個機會整理一下相關的知識點,並且在這道演算法題中進行了實踐 本文的解法來自於該演算法題的一篇討論。對除數和被除數實現除法運算,其中不使用乘法 除法和求餘操作,返回對應的商。如,input dividend 10,divisor 3 output 3 cla...

不用除法操作符如何實現兩個正整數的除法?

基礎知識 1 常用的等式 n n 1 n 1 2 獲取整數n的二進位制中最後乙個1 n n 或者n n 1 3 去掉整數n的二進位制中的最後乙個1 n n 1 方法一 根據除法運算的原理進行減法操作,對除法迴圈減被除數,減一次結果加一,直到剛好減為0或餘數小於被除數為止。方法二 遞迴法求解。如果每次...

(筆試題)不用除法操作符,實現兩個正整數的除法

如題所示 假設問題是a除以b 題目要求是正整數,所以考慮的條件不是很多,如果要求是整數的話,即要考慮正負情況的判斷。1 最簡單的就是依次用被除數a減去除數b,並統計減去的次數,即為相除結果 這種方法效率不高,尤其是在被除數a很大,除數b很小的情況下,效率非常低 2 考慮每次相減時,將b翻倍,這樣就可...