十進位制與二進位制的轉換

2022-02-26 22:08:14 字數 1592 閱讀 8445

題目:分別編寫把十進位制整數轉化為二進位制和把二進位制整數轉化為十進位制整數的函式,並編寫主程式呼叫它們,以驗證其正確性。

【演算法】:將十進位制整數轉化為二進位制整數的演算法是:將十進位制數除以2

,得到乙個商數和乙個餘數;再將商數除以

2,又得到乙個商數和乙個餘數;繼續這個過程,直到商數為

0為止。每次得到的餘數(必定是0或

1)就是對應二進位制的各位數字。最後一次得到的餘數為二進位制的最高位,第一次得到的為二進位制的最低位。

將二進位制數轉化為十進位制數的演算法是:將二進位制數的各位數字乘以2的

n次方再相加,其中

n等於相應二進位制數數字的位序號(從該整數的末位數起)減

1;這樣得到的和就是所求的十進位制數。

【流程圖】

shi_zhuan_er

的流程圖

i=0並定義靜態陣列

a[24]

輸出提示(

printf("

將十進位制數轉化為二進位制數:

\n");

)n>0

k=n%2;n=(n-k)/2;a[i]=k;i++;

i=23

輸出a[i] (printf("%d",a[i]);)

i=i-1換行

return

er_zhuan_shi

的流程圖:m=

0輸出提示(

printf("

將二進位制數轉化為十進位制數:

\n");

)i=0

i<=n

k=n-i-1;m=a[i]*pow(2,k)+m;

i=i+1

輸出m (printf("%d",m);)

return

主函式因簡單,流程圖省略。

【程式清單】:

/*5.c*/

#include"stdio.h"

#include"math.h"

void shi_zhuan_er(int n)

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

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

printf("\n");

return;

}void er_zhuan_shi(int a,int n)

printf("%d",m);

return;

}void main()

else if (c=='e')

}

【執行結果】

十進位制轉化為二進位制還是二進位制轉化為十進位制

(s&e):

s輸入資料:

123將十進位制數轉化為二進位制數:

000000000000000001111011

再次執行:

十進位制轉化為二進位制還是二進位制轉化為十進位制

(s&e):

e輸入資料的位數:6

輸入資料(請輸入乙個數字後加空格分隔)

:1 0 1 0 1 1

將二進位制數轉化為十進位制數:

43

十進位制二進位制轉換

一 整形裝換成兩個位元組 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...