考慮n位二進位製數,有多少個數中不存在兩個相鄰的

2021-03-04 09:01:01 字數 2771 閱讀 4845

1樓:匿名使用者

一、二進位製數模式考慮n位二進位製數,有多少個數中不存在兩個相鄰的1。例如,3位數中有5個數符

求對於不包含2個連續0的n位二進位制位串的個數有關的遞推關係

2樓:匿名使用者

1位:1、0-內

---2種可能

2位:11、容01、10----3種可能

3位:111、110、101、011、010----5種可能4位:1111、1110、1101、1011、0111、0101、1010、0110----8種可能

5位:11111、11110、11101、11011、10111、01111、01011、01101、01110、10101、10110、01010、11010----13種情況

所以,遞推公式為:fn=fn-1+fn-2

計算乙個數的二進位制表示中有多少個1

3樓:匿名使用者

短整數8位,整數16位,長整數32位。具體有幾位1與不同數值和資料型別有關。

4樓:匿名使用者

計算bai機裡的數字本來就是

du用二進位制存的,所

zhi以計算過dao程也都是二進版制計算。利用一些位運權算的特性,可以很容易計算1的個數。

有乙個很有意思的特性:隨便給乙個二進位製數,比如n=10001100,我們把它減一:n-1=10001011。重新擺放一下觀察:

10001100 (n)

10001011 (n-1)

通過觀察得出,n中為1的最低位是第3位,而n-1和n的低3位全都不同。如果進行「按位與」操作,即 n & (n-1) = 10001000。

10001100 (n)

10001011 (n-1)

10001000 (n & (n-1))

可以看到底3位都變成了0。

如果你數學足夠好,可以得出結論:

[結論]要消除整數n最低位的1,可以使用 n = n & (n-1)。

如果覺得不相信,可以多試試幾個數,或者再琢磨一下。

利用結論,想要求二進位制中有多少個1就很容易了:

int countbits(int n)

return count;}

5樓:匿名使用者

public static int bitcount(int i)

解釋下思路:

先計算每兩位有多少個1,在根據前者的結果計算每4位有多少個1,以此類推

首先解釋下第一步計算沒兩步有多少個1,即原始碼中的 i = i - ((i >>> 1) & 0x55555555);

首先我們知其對映關係:

00----->00,

01----->01,

10----->01,

11----->10

可得對映公式為:原數減去偶位數的值得對映值,如01偶位數為0,01-0=01;10偶位數為1,10-1=01。

(i >>> 1) & 0x55555555這步只保留了偶位數的值

i - ((i >>> 1) & 0x55555555)結果可得出每兩位有多少個1,比如第25,26位有幾個1,那對映的結果就保留在25,26位上,這一步很重要,它將原資料格式化,以供接下來的計算。第一步就這樣搞定了

接下來第二步:根據前者的結果計算每4位有多少個1

前面已經得出每兩位有多少個1的結果

(i & 0x33333333) 保留了每四位中第0和第1位的有效資料

((i >>> 2) & 0x33333333) 保留了每四位中第2和第3位的有效資料

i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);這一步將可得出結果每四位中有多少個1(不寫成(i+(i >>> 2))& 0x33333333的原因是怕資料溢位),接下來以此類推

i = (i + (i >>> 4)) & 0x0f0f0f0f; 計算每8位有多少個1

i = i + (i >>> 8);計算每16位有多少個1

i = i + (i >>> 16);計算每32位有多少個1

最後一步:

由於 i = i + (i >>> 8)和i + (i >>> 16) 中是沒將無效的資料去掉的,但由於這兩步的結果已經全存在於最後6位,所以加 i & 0x3f 將這兩步的無效資料去掉,得到最終結果。

乙個n位二進位制數字可代表多少個不同的值?

6樓:匿名使用者

1位二進位製數,就只有和兩種狀態。2位就有00,01,10,11四種狀態。n位就有2的n次方個不同的值。

二進位制是計算技術中廣泛採用的一種數制。二進位制資料是用0和1兩個數碼來表示的數。它的基數為2,進製規則是「逢二進一」,借位規則是「借一當二」。

二進位製數(binaries)是逢2進製的進製,0、1是基本算符;計算機運算基礎採用二進位制。電腦的基礎是二進位制。在早期設計的常用的進製主要是十進位制(因為我們有十個手指,所以十進位制是比較合理的選擇,用手指可以表示十個數字,0的概念直到很久以後才出現,所以是1-10而不是0-9)。

電子計算機出現以後,使用電子管來表示十種狀態過於複雜,所以所有的電子計算機中只有兩種基本的狀態,開和關。也就是說,電子管的兩種狀態決定了以電子管為基礎的電子計算機採用二進位制來表示數字和資料。常用的進製還有8進製和16進製制,在電腦科學中,經常會用到16進製制,而十進位制的使用非常少,這是因為16進製制和二進位制有天然的聯絡:

4個二進位制位可以表示從0到15的數字,這剛好是1個16進製制位可以表示的資料,也就是說,將二進位制轉換成16進製制只要每4位進行轉換就可以了。

二進位製數對應的十進位製數是多少,二進位製數1010101對應的十進位製數是多少

寫出二進位制每位上的基數就可以計算了 二進位制基數寫法 個位1,小數點左邊 高位 低位 2,小數點右邊 后位 前位 2 按順序寫出1010.101b對應各位 8 4 2 1.1 2 1 4 1 8 將要轉換的數按位對齊寫在下面一行 1 0 1 0.1 0 1 觀察這個數 這個數包含1個8,1個2,1...

n位二進位制數字可代表多少個不同的值

1位二進位製數,就只有和兩種狀態。2位就有00,01,10,11四種狀態。n位就有2的n次方個不同的值。二進位制是計算技術中廣泛採用的一種數制。二進位制資料是用0和1兩個數碼來表示的數。它的基數為2,進製規則是 逢二進一 借位規則是 借一當二 二進位製數 binaries 是逢2進製的進製,0 1是...

二進位制中10多少?為什麼,二進位制中01為什麼

等於1。和10進製逢10進1乙個道理,2進製是逢2進1 等於10進製的2,因為二進位制滿二進一。從0開始數,下乙個是1,然後是2,滿二要進到十位,就成了10 二進位制中0 1為什麼 1?舉個例子吧,假設暫存器是32位的,現在的cpu有64位的,但32位的作業系統,執行時是用32的暫存器,暫存器向下相...