做了個十進位制轉換成二進位制的題,就是容易忽略一些細節。
我寫的十進位制轉換二進位制函式**是這樣的
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...