問個C語言進位制轉換問題 C語言之進位制之間的轉換

2023-04-15 07:30:07 字數 5382 閱讀 3659

1樓:匿名使用者

很多人問這個問題呀!

#include

#include

十進位制轉n進位制。

in: ndec輸入的十進位制數。

nradix要轉換的進位制(二進位制,八進位制,十六進位制。

out: 輸出的轉換後的用n進製表示的字串void dectobin(int ndec, int nradix, char* szbin)

elsestrcat(szbin, szbit);

int main()

2樓:網友

十進位制數n和其他d進位制數的轉換的基本原理是下述公式:

n=(n div d)*d + n mod d(div為整除運算,mod為求餘)

對於輸入的任意一個非負十進位制整數,列印出與其等值的八進位制數,只需將計算過程中得到的八進位制數的各位順序進棧,按出棧序列列印輸出的即為與輸入相對應的八進位制數。

c語言之進位制之間的轉換

3樓:戶如樂

計算機中一般是二進位制、八進位制、十進位制和十六進位制之間的相互轉換,主要是圍繞 二進位制 進行轉換,也就是說 二進位制 是核心。

[**上傳失敗。image-9e6904-1533226303616)]

第二:直接法—把十進位制轉八進位制或者十六進位制按照除8或者16取餘,直到商為0為止。

方法為:把八進位制、十六進位制數按權、相加即得十進位制數。

第一種:他們之間的轉換可以先轉成二進位制然後再相互轉換。

第二種:他們之間的轉換可以先轉成十進位制然後再相互轉換。

資料在記憶體中儲存的時候都是以 二進位制 的形式儲存的。int num = 10; 原碼、反碼、補碼都是二進位制。只不過是二進位制的不同的表現形式。資料是以 補碼 的二進位制儲存的。

1個int型別的變數。在32位編譯器記憶體中佔據4個位元組(這裡不單獨討論int型別的具體的位元組數,若不明白看下面的拓展資料)

如果最高為是0 那麼表示這個數是1個正數。

如果最高為是1 那麼表示這個數是1個負數。

最高位表示符號位。 剩下的位數。是這個數的絕對值的二進位制。

絕對值: 正數的絕對值是自己,負數的絕對值去掉負號。

正數的反碼就是其原碼。負數的反碼就是在其原碼的基礎之上 符號位不變,其他位取反。

正數的補碼就是其原碼。負數的補碼就是在其反碼的基礎之上+1

任何資料都是以其 二進位制的補碼 形式儲存在記憶體中的

計算機中只有加法沒有減法。為了更加低成本的計算出結果,所以使用補碼來儲存資料。

3 - 2; 這個減法運算對於計算機而言它的理解是 3 + 2);

小白求教進位制轉換的問題 5

4樓:瘋狂小鳥

如圖所示,這個沒錯,是,這個是要將十六進位制直接轉成浮點數,這個都是由一些精度誤差的,因為浮點數與十六進位制的轉換本身就由誤差。

望。。。

c語言中進位制的表示和轉換

5樓:科創

c語言中常用的有十進位制、二進位制、八進位制(用0表示)、十六進位制(用0x表示)。

十進位制轉二進位制:

十進位制轉二進位制採取除於2取餘的方式。

將十進位制數除於2得到商和餘數,將商繼續除於2一直到商為0,將得到的餘數倒敘排列就是轉換為二進位制的結果。

二進位制轉十進位制:

從右向左用二進位制位上的每一個數乘以2的相應次方。

如二進位制1010轉換為十進位制:

1010 = 0*(2的0次方)+1*(2的1次方)+0*(2的2次方)+1*(2的3次方) =2 + 8 = 10

八進位制轉換為二進位制。

將二進位制數自右向左每三位分為一段(若不足三位用0補齊),然後將二進位制的每三位轉換為一位八進位制數。

如將二進位制數0101010轉換為八進位制:

0 101 010不夠三位的補0得到。

000 101 010 = 052 = 0052(八進位制用0表示)

十六進位制轉換為二進位制。

將二進位制數自右向左每四位分為一段(若不足三位用0補齊),然後將二進位制的每4位轉換為一位十六進位制數。

如將二進位制數0101100轉換為十六進位制:

010 1100不夠三位的補0得到。

0010 1100 = 2c= 0x2c(十六進位制用0x表示)

進位制計算機進位制轉換問題

6樓:

諮詢記錄 · 於2023-02-06

親~進位制計算機進位制轉換問題按照以下方式即可解決:計算機的進位制轉換是由低到高的操作,即從十進位制轉換為八進位制、十六進位制等。轉換公式如下:

十進位制轉換為八進位制:將十進行數n拆成整數部分和小數部分,把整數部分轉換為八進行,把小數部分乘以8^n,n為當前小數位從右往左從第一位『.』計數起,以1為基數,將所得結果加起來,就是所求八進位制數。

八進位制轉換為十進位制:將八進位制數拆成整數部分和小數部分,把整數部分按八進行轉換,把小數部分按1/8的冪次乘以8,將結果加起來,就是所要求的十進位制數。

各個進位制之間的轉換問題

7樓:匿名使用者

這個論壇有bai

一個文件,du裡面zhi

就是說進位制轉換的dao,可版以轉來轉權去的;

c語言中的進位制怎麼轉換啊

8樓:匿名使用者

任意進位制之間的進位制轉換。需要考慮高精度整形的設計,用陣列模擬一個整形變數。一位一位的進行進位制轉換,演算法思想和十進位制轉換到二進位制相同,除以目標進位制,餘數為低位。

這種進位制轉換實用性不強,一般出現在計算機程式競賽當中。

8,10,16進位制的轉換。在c語言中有不少函式都能實現上面幾種進位制之間的進位制轉換。

推薦其中的sprintf/sscanf函式。

sprintf格式的規格如下所示。中的部分是可選的。

%[指定引數][識別符號][寬度][.精度]指示符若想輸出'%'本身時, 請使用'%%處理。

1. 處理字元方向。負號時表示從後向前處理。

2. 填空字元。 0 的話表示空格填 0;空格是內定值,表示空格就放著。

3. 字元總寬度。為最小寬度。

4. 精確度。指在小數點後的浮點數位數。

轉換字元。%%印出百分比符號,不轉換。

%c 整數轉成對應的 ascii 字元。

%d 整數轉成十進位。

%f 倍精確度數字轉成浮點數。

%o 整數轉成八進位。

%s 整數轉成字串。

%x 整數轉成小寫十六進位。

%x 整數轉成大寫十六進位。

例程(16進位制和10進位制之間的轉換):

#include

#include

int main()

; sprintf(s, "x", int_max);

printf("%s", s); 7fffffffchar str[100] =7fffffff";

int i = 0;

sscanf(str, "x", i);

printf("%d", i); 2147483647return 0;}

9樓:匿名使用者

前面的是告訴你原理,後面的是告訴你使用,我推薦後面個sprintf 將字串格式化。

在標頭檔案 #include中。

語法: string sprintf(string format, mixed [args]..

傳回值: 字串。

1. 處理字元方向。-負號時表時從後向前處理。

2. 填空字元。 0 的話表示空格填 0;空格是內定值,表示空格就放著。

3. 字元總寬度。為最小寬度。

4. 精確度。指在小數點後的浮點數位數。

=-=轉換字元。

=-=印出百分比符號,不轉換。

b 整數轉成二進位。

c 整數轉成對應的 ascii 字元。

d 整數轉成十進位。

f 倍精確度數字轉成浮點數。

o 整數轉成八進位。

s 整數轉成字串。

x 整數轉成小寫十六進位。

x 整數轉成大寫十六進位。

10樓:匿名使用者

用一個函式搞定。

任意進位制間的轉換。

#include

#include

#include

/*該函式可以實現小於整型資料的任意進位制之間轉換*//以下函式將a進位制數s轉換成b進位制並輸出*/void f(int a,int b,char s)for(i=0;t!=0;i++)再轉換成b進位制*/r[i]='0';

s=strrev(r);

printf("%s",s);

11樓:匿名使用者

關於進位制轉換,我覺得挺好玩的不就是幾個公式吧了,就如我第一次所學的二進位制轉換為十進位制,十進位制轉換為二進位制,那樣的型別其實也挺有趣的。

比如:一個二進位制數轉化為十進位制數,如哦我所給的一個二進位制數「101101001」我就設十進位制數是z

首先有個公式可套:z=1*x8+0*x7+1*x6+1*x5+0*x4+1*x3+0*x2+0*x1+1*x0

把只是x換為2,算出來的就是你所得到的此二進位制數所對應的十進位制數。

同理:如八進位制數轉換為十進位制數就是把x換為8,十六進位制數轉換十進位制數把x換為16,至於二進位制數轉化為八進位制數更有意思;

首先我引進一個例子:這是一個比較特殊的二進位制數:111111111111

首先把這組數按三個數劃分一組(從右開始劃分):如,111,111,111,111 於是結果是7777

然後就分別把化為各組的陣列轉化為是進位制數,最後進把你剛才算出的數按原來的順序排起來,於是得到的結果就是你想要的。

那十六進位制就是把陣列中的每四個劃分一組(從右開始劃分的)

如111111111111劃分結果為1111,1111,1111, 方法與上面一樣,於是它的結果是fff

關於十進位制轉化二進位制,八進位制和十六進位制,方法都是一樣的。

同二進位制方法雷同。

12樓:匿名使用者

用sprintf()用法。

可以參考這個。

13樓:趙斌杞語柳

#include

intmain(void)

要重複,新增迴圈就ok了。

這裡簡單的實現你的輸入和輸出功能,並沒有真正從運算規則上去進行轉換,你也沒做這樣的要求,不知道是不是你想要的結果。

C語言問題,位運算,二進位制,C語言問題,位運算,二進位制

int bit set int arg,int bit ii int bit clear int arg,int bit iii int bit invert int arg,int bit 三個函式的返回值為0,表示bit超範圍,操作失敗。返回1表示操作成功。第一copy個結果的確是1111,但用...

c語言問題,C語言問題!

prid32是個什麼?而且你的雙引號得加轉義符吧?去掉prid32前後的雙引號,另外prid32是否有定義?你的這個軟體支援c99或者c11嘛 就像vc6.0版本太老就不支援c99 看看軟體支不支援 沒有巨集定義,在標頭檔案下面加 define prid32 d c語言問題!因為s是一個指向floa...

c語言問題,c語言問題

include void main 定義f 0 1 f 1 1 for i 2 i 20 i 從2開始到19做迴圈,這裡你少打一個i f i f i 2 f i 1 例如當前i 2則f 2 f 0 f 1 2 迴圈繼續 i 3則 f 3 f 2 f 1 3 迴圈繼續.for i 0 i 20 i 從...