二進位制 簡學 二進位制數制的應用

2021-10-14 19:48:21 字數 1643 閱讀 3454

設現有正整數150,二進位制形式為10010110,現有如下題目,求其盡可能簡單的解法。

題目一:判斷該正整數是否是2的乘方;

解法:

由上表可以看出2的乘方的二進位制形式只有乙個bit為1,因此判斷乙個正整數a是否為2的乘方,可以判斷a&(a-1)是否等於0,若結果為0,則是2的乘方,若不為0則不是2的乘方。

題目二:判斷正整數是否能被4整除;

解法:

乙個正整數可以將其表示為a=m*8+n;m是a的高位bit組成的數字,n是低三位bit組成的數字,例150=(10010)18*8+6;因為m*8是能被4整除的,因此只需判斷n能否被4整除即可,從上式可以看出150的n值不能被4整除,所以該正整數不能被4整除。

題目三:不用乘法器求該正整數*3的結果;

解法:根據上表乙個正整數a*2的結果為將該正整數的二進位制左移乙個bit位,並低位補0。因此求乙個正整數*3的結果根據乘法的基本定律得到:a*3=a*(2+1)=a*2+a,而a*2可以轉換為左移補0的動作,因此a*3可以轉換為不用乘法器的運算。

題目4:求乙個未知整數除以7的餘數,該整數的範圍為0-255,要求不使用除法器;

解法:該整數的最大可能值為255,因此該整數的二進位制形式可以用8個bit位表示x7x6x5x4x3x2x1x0;根據題目二的思想,可以將該整數表示為a=x7*128+x6*64+x5*32+x4*16+x3*8+x2*4+x1*2+x0;

a/7=(x7*128+x6*64+x5*32+x4*16+x3*8+x2*4+x1*2+x0)/7;

a/7=x7*(128/7)+x6*(64/7)+x5*(32/7)+x4*(16/7)+x3*(8/7)+(x2*4+x1*2+x0)/7;

根據除法的基本定律可以知道除法結果=商和餘數:

分別計算上式的元素:

根據除法的基本定律可以得出a/7:

餘p:x7*2+x6*1+x5*4+x4*2+x3*1+x2*4+x1*2+x0

=x7x6+x5x4x3+x2x1x0(p的最大值3+7+7=17)

商q:x7*18+x6*9+x5*4+x4*2+x3*1+0

=9*x7x6+x5x4x3

由上式可以看出餘數p的最大值可能為17因此餘數p還能除以7;

因此真正的餘數和商等於:

餘:p/7取餘p;商:q+p/7取商q

因為p的值為0-17是有限的值,因此可以列舉求其商和餘數:

case(p)

0:q=0;p=0;

1:q=0;p=1;

2:q=0;p=2;

17:q=2;p=3;

得到乙個0-255的未知整數除以7的最終結果:

商=q+q=9*x7x6+x5x4x3+q;餘數=p,pq可有case(p=x7x6+x5x4x3+x2x1x0)求得,因此整個運算不需要用到除法器。

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

判斷二進位製半整數(二進位制)

10年後,tokitsukaze大佬已經變成了年收入超百萬的的精英程式設計師,家裡沒錢也沒礦的teitoku,找tokitsukaze大佬借1000塊錢,然後tokitsukaze大佬說,借你1024吧,湊個整數。沒錯在2進製下1024是 二進位制整數 乙個正整數滿足其值為2的k次方 k為正整數 我...

mysql二進位制 MySql二進位制連線方式詳解

使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示視窗,你可以...