將十進位制數轉為二進位制數,用c語言,簡單一點並且要使用按位運算子

2021-04-21 09:41:18 字數 5674 閱讀 7546

1樓:匿名使用者

#include

int main()

printf("%u(dec) = ",dec);

for(i=0;i<32;i++) printf("%u",bin[i]);

printf("(bin)\n");

return 0;

}執行結果:

12345678(dec) = 00000000101111000110000101001110(bin)

用c語言編寫二進位制轉換十進位制的程式。

2樓:依然特雷西

1、為了完成進位制的轉換,在主函式中宣告瞭個函式sum,主要用於將二進位制的每一位轉換為十進位制後的數相加,返回值就是相加後的和。另外定義了一個陣列array[8],用於存放輸入的八位二進位制數。

2、然後使用了一個for迴圈語句,用於輸入八位二進位制數。

3、在sum函式中,又宣告瞭一個power函式,power函式的作用是求2的n次方。

4、接著,使用了一個for迴圈語句,i用於控制迴圈的次數,n從最高的指數7開始每次迴圈減一,如果指數大於或等於零的,就進行迴圈。

5、在power函式中,如果b等於零,即指數為零,則返回1,否則就進入一個迴圈,j用於控制迴圈次數,有疑問的可以用筆算算乘2的個數對不對,最後將i返回。

6、最後看一下執行的結果。

3樓:匿名使用者

一下兩個程式均在vc在編譯通過。

/*如果這個二進位制數比較大的話, 大到只能用陣列儲存這個二進位制數,當然如果大到轉化成10進位制int存不下的情況那另當別論*/#include

#include

int main()

printf("%d\n", num);

return 0;}/*

如果這個二進位制數的位數不超過10位的話

可用這個程式

*/#include

int main()

printf("%d\n", num);

return 0;}

4樓:匿名使用者

#include

#include

#include

#include

//bin二進位制串

//返回其對應的十進位制數

//返回-1表示失敗

//end表示終止位置

unsigned bintodec(char *bin,char **end)

i = strlen(bin);

*end = bin+i;

while(i>=0)

else if(*(bin+i) == '0')else

i--;

}return dec;

}int main(int argc,char *argv)

5樓:zz迎風

#include

#include

void main()

for(t=0;i>=0;i--)

}printf("%d\n",s);}

c語言程式設計 把十進位制轉換為十六進位制

6樓:黑白say晚安

方法一:

#include

#include

using namespace std;

string decinttohexstr(long long num)

string decstrtohexstr(string str)int main()

return 0;}

方法二:

#include

#include

#include

#include

#include

using namespace std;int main()

reverse(v.begin(), v.end()); string hexstr; if (v.

size() % 4 == 0)    if (temp <= 9) hexstr += temp; else hexstr += ('a' + temp - 10); } }

else

if (temp <= 9) else hexstr += ('a' + temp - 10); } } cout << hexstr << endl; return 0;}

擴充套件資料:

還有3種方式可以實現,其中兩種是使用系統函式,另一種是直接自己編寫。

下面的**就是3種方式的實現,包括2位的整數和任意整數(2的31次方以內)都可以。可自己選擇需要的實現方式。

利用系統函式有

1. char *  itoa ( int value, char * str, int base );value是要轉化的數字,str是轉化後的字串儲存的位置,base是進位制數(但是這個函式不是標準c函式,有些編譯器是不支援的!)。

所以**可以為:

char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

2. sprintf(str,"%x",value);str是轉化儲存的位置,%x表示十六進位制格式,value是要轉化的數字。所以**可以為:

char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

3. 自己編寫

如果引數只要兩位數的整數,那麼很簡單。

**如下:

#include #include char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa)

int main ()

7樓:匿名使用者

#include #include char buffer [33]; //用於存放轉換好的十六進位制字串,可根據需要定義長度 char * inttohex(int aa) int main ()

擴充套件資料:

16進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方……

所以,在第n(n從0開始)位上,如果是是數 x (x 大於等於0,並且x小於等於 15,即:f)表示的大小為 x * 16的n次方。

例:2af5換算成10進位制:

用豎式計算:

第0位: 5 * 16^0 = 5

第1位: f * 16^1 = 240

第2位: a * 16^2= 2560

第3位: 2 * 16^3 = 8192

-------------------------------------

10997

直接計算就是:

5 * 16^0 + f * 16^1 + a * 16^2 + 2 * 16^3 = 10997

16進位制到二進位制

由於在二進位制的表示方法中,每四位所表示的數的最大值對應16進位制的15,即16進位制每一位上最大值,所以,我們可以得出簡便的轉換方法,將16進位制上每一位分別對應二進位制上四位進行轉換,即得所求

8樓:我是一個麻瓜啊

程式設計程式如下:

擴充套件資料

十六進位制轉換十進位制

16進位制就是逢16進1,但我們只有0~9這十個數字,所以我們用a,b,c,d,e,f這六個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。

十六進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方,以此類推。在第n(n從0開始)位上,如果是數β (β大於等於0,並且β小於等於 15,即:f)表示的大小為 β×16的n次方。

假設有一個十六進數 2af5直接計算就是:5×160+f×161+a×162+2×163=10997

9樓:澀錦無弦

1、方法一:使用進位制轉換。

#include

#include

/* 十六進位制數轉換為十進位制數 */

long hextodec(char *source);

/* 返回ch字元在sign陣列中的序號 */

int getindexofsigns(char ch);

int main()

/* 十六進位制數轉換為十進位制數 */

long hextodec(char *source)

return sum;

}/* 返回ch字元在sign陣列中的序號 */

int getindexofsigns(char ch)

if(ch >= 'a' && ch <='f')

if(ch >= 'a' && ch <= 'f')

return -1;

}2、方法二:可以使用sscanf函式將以字串形式的十六進位制數轉換為整型的十六進位制。

sscanf函式的用法與printf函式很像,都是以格式化的形式進行操作。例如如下的例子中是將字串a23cd以十六進位制形式輸入a中,如果將"%x"換成為"%d"的話,就是將字串a23cd以十進位制形式輸入a中,這顯然是錯誤的,因為將a23cd轉換為十進位制的時候,無法解析a,cd等字元,所以得出的結果就是錯誤的。

int a;

sscanf("a23cd", "%x", &a);

printf("%x\n",a);

printf("%d\n",a);

linux@ubuntu:~/test$ ./a.out

a23cd

664525

擴充套件資料

c語言是一門通用計算機程式語言,廣泛應用於底層開發。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

參考資料

10樓:岔路程式緣

稍等一會兒好嗎~~

#include

main()

else

else

a=a/16;

w++;}}

printf("\n");

printf("%d(10)轉換為16進位制數字為:",u10);

for(i=w-1;i>=0;i--)

printf("\n");}

11樓:匿名使用者

通過鍵盤輸入一個十進位制數,然後將其

12樓:匿名使用者

#include

int main(void)

i=0;

while(x)

for(j=i-1;j>=0;j--)

if(a[j]<=9)

printf("%d",a[j]);

else if(a[j]<=15)

printf("%c",a[j]+'a'-10);

printf("\n");

return 0;}

二進位制數10110換算十進位制數是多少

10110 二進位制 22 十進位制 二進位制轉十進位制 要從右到左用二進位制的每個數去乘以2的相應次方例如 二進位制數1101.01轉化成十進位制 1101.01 2 1 20 0 21 1 22 1 23 0 2 1 1 2 2 1 0 4 8 0 0.25 13.25 所以總結起來通用公式為 ...

用c語言,輸入十進位制數,輸出相應的二進位制32位原碼 補碼 反碼 移碼和IEEE754浮點數

include include void main if n 0 輸入一個數字,既要用原碼反碼.顯示,又用ieee754浮點數顯示?不像話。輸入一個十進位制數,用c語言輸出其原碼補碼反碼移碼 十進位制數可以為正負數整數小數 25 include include void main if n 0 設計...

將二進位制數100轉換成十進位制數是

題目所述是一個含有小數的二進位制轉十進位制數的問題,對於這類問題可以分兩步來 版做,首權先將整數部分轉為十進位制,整數部分的二進位制轉十進位制,可以使用位權法,如下圖所示 整數部分的二進位制數轉十進位制數 然後再將小數位的二進位制轉為十進位制數,也是使用位權法,但是注意權值是2的 n n 1,2,3...