值得注意的是,存放二進位制的陣列最後一位才是二進位制的第一位,例如:char bin[5]=」1100」,那麼bin[3] 才是二進位制的第一位.
1.二進位制–>八進位制
二進位制轉換為八進位制是非常簡單的,因為每三個二進位制就是一位八進位制.如果不足三位二進位制則補0.
例如: 10101 –>010 101 –>25
1101 –> 001 101 –> 15
思路有了,接下來就是把思路轉換為**寫出來即可.
**如下:
long
long bintooct(char* bin)
}//如果最後沒有構成三位二進位制,則不會進入到if語句,也就是會少加一次,這裡要補回來
return oct += powl(10, p++)*a;;
}
注意:這個函式最大支援57位2進製的轉換
2.二進位制 –> 十進位制
這個就太簡單了,直接求權值和就行了
long
long bintodec(char* bin)
注意:最大支援63位2進製的轉換
3.二進位制 –> 十六進製制
這個的思路和八進位制一樣,只不過這裡是4個為一組
void bintohex(char* bin, char* hex, int n = 20)
}if ((i % 4 && q) || i == 0)//防止k!=4漏加了乙個
temp[i++] = a[q];
k = 0;
while (i)
hex[k++] = temp[--i];//反轉過來
free(temp);
}
引數n = 20 是預設值,c++才支援,為什麼我要這樣寫呢?因為二進位制和十六進製制都是用陣列儲存的,所以,它們之間的轉換沒有限制,所以我用了動態分配記憶體,而大小就是傳進來的n. 如何將十六進製制轉換為 二進位制 八進位制 十進位制
1.十六進製制 二進位制 void hextobin char hex,char bin,int n 20 int temp int malloc sizeof int n memset temp,0,n 4 char h hex int i 0,j 0,k 0,g 0 while h 把十六進製制...
將二進位制 八進位制 十六進製制轉換為十進位制
將二進位制 八進位制 十六進製制轉換為十進位制 二進位制 八進位制和十六進製制向十進位制轉換都非常容易,就是 按權相加 所謂 權 也即 位權 假設當前數字是 n 進製,那麼 對於整數部分,從右往左看,第 i 位的位權等於ni 1 對於小數部分,恰好相反,要從左往右看,第 j 位的位權為n j。更加通...
十進位制轉換為十六進製制 八進位制 二進位制的程式設計
include 定義棧基本資料型別 typedef struct list int input 0 被轉化的十進位制數 int jinzhi 0 想要轉化成的進製數 void change 10 n list s,int n void putput list data list s,int n ma...