二進制在十進制中的表示是
1 ?1 1 1 1 ?1 ?1 ?1
128 ?64 ?32 ?16 ?8 ?4 ?2 ?1
整個過程是2的倍數。
所以10只要連續取余數就可以轉換成二進制。
冪是在10顯示二進制數時進行進位。
如果操作中沒有pow,就會有1+0+1+1,值只有3。
所以計算第二位的時候需要x10,第三位是x100,第四位是x1000,以此類推。
最終結果是1 * 1000+0 * 100+1 * 10+1 = 101。
因為計算機中的所有數據都是以二進制存儲的。
所以直接二進制操作就方便多了。
int?DecToBin(int?A)//10二進制到二進制
{
int?I,n = 0;
for(I = 0;我& lt16;I++)// int默認為16位?可以改成32位。
{
n * = 10;//像pow壹樣發揚光大?
如果(a & amp0x8000)//取出A的最高位?當它是32位時,0x8000可以改為0x80000000。
n++;//如果這個位是1,+1。
a & lt& lt=1;//a的值左移壹位,得到所有位。
}
回歸?n;//返回轉換結果。
這種方法大大提高了執行效率。
非正式的
有些地方需要用二進制。這裏有壹個宏定義,方便從二進制直接轉換到16。
#定義?B(n)?(((n & gt& gt21)& amp;0x 80)|((n & gt;& gt18);0x 40)|((n & gt;& gt15)& amp;0x 20)|((n & gt;& gt12)& amp;0x 10)|((n & gt;& gt9)& amp;0x 08)|((n & gt;& gt6)& amp;0x 04)|((n & gt;& gt3)& amp;0x 02)|((n)& amp;0x01))
#定義?BinToHex(n)?B(0x##n##l)執行效果: