十進位制轉換二進位制 非遞迴實現

2021-09-07 03:04:45 字數 929 閱讀 5301

做了個十進位制轉換成二進位制的題,就是容易忽略一些細節。

我寫的十進位制轉換二進位制函式**是這樣的

int

fan(

int n)

while

(i--

)printf

("%d"

,a[i]);

}

但是我看了大神的**之後,就有點不懂了。

int

fan1

(int n)

while

(i--

)printf

("%d"

,a[i]);

}

我當時不懂為什麼n&1可以替換n%2。之後上網查了查。

首先,a&b表示,a和b在計算機中儲存的對應二進位製碼按位取與;

例如:a的二進位製碼為:0111,b的二進位製碼為:0011時:

0111

& 0011

= 0011

對應十進位制形式為:7&3=3;

同理:因為1的對應儲存的二進位製碼除了最低位,其他位都是0,所以,n&1要麼為1(n為奇數時,n的最低位為1),要麼為0(n為偶數時,n的最低位為0)。

綜上可得:n&1等效於 n%2==1 。

#include

#include

intfan

(int n)

while

(i--

)printf

("%d"

,a[i]);

}int

fan1

(int n)

while

(i--

)printf

("%d"

,a[i]);

}int

main()

十進位制二進位制轉換

一 整形裝換成兩個位元組 int value 456 unsigned char byte1 value 0xff00 8 高8位 unsigned char byte2 value 0xff 低8位 nslog byte1 x byte2 x byte1,byte2 byte1 1 byte2 c...

十進位制二進位制轉換

1.十進位制轉二進位制 正整數轉二進位制 除二取餘,然後倒序排列,高位補零 負整數轉二進位制 先是將對應的正整數轉換成二進位制後,對二進位製取反,然後對結果再加一。小數轉換二進位制 對小數點以後的數乘以2,取結果的整數部分 不是1就是0嘍 然後再用小數部分再乘以2,再取結果的整數部分 以此類推,直到...

十進位制二進位制轉換

二進位制轉十進位制 二進位制的1101轉化成十進位制 1101 2 1 2o 0 21 1 22 1 23 1 0 4 8 13 轉化成十進位制要從右到左用二進位制的每個數去乘以2的相應次方 不過次方要從0開始 相反 用十進位制的數除以2 每除一下將餘數就記在旁邊 最後按餘數從下向上排列就可得到11...