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 從...