❶ c語言中進制數的轉化問題。
十進制是大家最熟悉的,生活中用的最多的,逢十進一。
而像二進制,八進制,十六進制大致和它相似。
二進制便是逢二進一,八進制是逢八進一,十六進制便是十六進一。
表示方法:
2進制,用兩個阿拉伯數字:0、1;
8進制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;
10進制,用十個阿拉伯數字:0到9;
16進制,用十個阿拉伯數字:0到9,再加A到F;
我個人覺得對初學者來說把別的進制轉換為十進制,再用求餘數的方法最簡單。。。
十進制整理轉換成二進制 將十進制整數轉換成二進制整數採用「除2取倒余法」。 即將十進制整數除以2,得到一個商和一個余數;再將商除以2,又得到一個商和一個余數; 以此類推,直到商等於零為止。 每次得到的余數的倒排列,就是對應二進制數的各位數。其實都可以這樣算。。。
自己理解,望採納!不懂再問,我覺得你應該問點具體的。。。
❷ C語言怎麼定義一個二進制數
C語言中沒有 「二進制數」這種類型,所以沒辦法直接定義;但可以直接定義16進制數。
例:
int main(){
int a;
scanf("%p",&a);//16進制數輸入%p是輸入一個十六進制的數scanf("%llx",&a);也可以輸入十六進制並且比較正規
printf("%d",a);//十進制輸出%d是輸出一個十進制的數
printf("0x%x",a);//16進制輸出printf("%llX ",a);也可輸出一個十六進制數如果紅色部分大寫X則輸出十六進制為大寫字母否則小寫x輸出為小寫字母
}
(2)c語言進制數擴展閱讀
C語言中定義整型數據的十六進制數:
unsigned int hex_val = 0x123;
//定義了一個整型變數並賦以初始值為一個十六進制常量。
if (scanf("%x", &hex_val) != EOF)
{
printf("它的八、十進制分別=%o、%d ", hex_val, hex_val);
}
❸ c語言怎樣定義並輸入一個16進制數
1、C/C++規定,16進制數必須以 0x開頭。比如 0x1表示一個16進制數,而1則表示一個十進制,0xff,0xFF,0X102A,等等.其中的x不用區分大小寫。
C/C++中,10進制數有正負之分。比如12表示正12,而-12表示負12。但8進制和16進制只能表達無符號的正整數,如果在代碼中寫-0xF2,C/C++並不把它當成一個負數。
2、以下是一些用法示例:
int a = 0x100F; //用一個十六進制數給變數a賦值
int b = 0x70 + a; //用一個十六進制數+變數a的值給變數b賦值
❹ C語言 進制數
這個是c語言的一個規定,八進制數以0開頭,另外,八進制數不能大於7
十六進制以ox開頭,十六進制的數不能大於15,且10~15的數用A~F或a~f來表示
❺ C語言2進制數的問題
/*
樓上說的用 itoa 轉換的方法,雖然可行,但是不是最簡便的。
所有數據本身在計算機裡面存儲本身就是二進制的,根本不用轉換。
如數字 int a=7; 設int 是4位元組,那麼計算機裡面的存儲形式就是:
00000000 000000000 00000000 00000111
你要查看哪位,直接就能取出來(通過位運算符)
*/
/*
n : 要查看的數字
bitIndex : 位地址,最低位地址為 0 ,取值范圍 [0,8*sizeof(int)-1]
*/
#include <stdio.h>
int getBit(int n,int bitIndex)
{
if(bitIndex < 0 || bitIndex >= sizeof(int)*8)
{
printf("超出范圍!\n");
return -1;
}
while(bitIndex--)
{
n>>=1;
}
return n&1;
}
int main()
{
int n = 7;
int bitIndex = 0;
int bit;
while((bit = getBit(n,bitIndex)) != -1)
{
printf("%d[%d]=%d\n",n,bitIndex,bit);
bitIndex++;
}
return 1;
}
/*
輸出:
7[0]=1
7[1]=1
7[2]=1
7[3]=0
7[4]=0
7[5]=0
7[6]=0
7[7]=0
7[8]=0
7[9]=0
7[10]=0
7[11]=0
7[12]=0
7[13]=0
7[14]=0
7[15]=0
7[16]=0
7[17]=0
7[18]=0
7[19]=0
7[20]=0
7[21]=0
7[22]=0
7[23]=0
7[24]=0
7[25]=0
7[26]=0
7[27]=0
7[28]=0
7[29]=0
7[30]=0
7[31]=0
超出范圍!
*/
❻ C語言中的進制怎麼轉換啊
關於進制轉換,我覺得挺好玩的不就是幾個公式吧了,
就如我第一次所學的二進制轉換為十進制,十進制轉換為二進制,那樣的類型其實也挺有趣的
比如:一個二進制數轉化為十進制數,如哦我所給的一個二進制數「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
關於十進制轉化二進制,八進制和十六進制,方法都是一樣的
同二進制方法雷同。
❼ 如何判斷c語言中數的進制
在C語言中,或者說在計算機中,所有的數都是以二進制方式存儲的。其它進制,包括8進制,10進制,16進制均是供人閱讀的。
在C語言中,整型常數有8進制,10進制,16進制三種表示方式。
1 以0開頭的常數,如0112, 0531,等,為8進製表示。
2 以0x或0X開頭的,為16進制,如0x12, 0xABC.
3 不帶任何前綴的,為10進製表示,如123,,812。
❽ 在C語言中整型常數可用十進制、八進制和______進制三種數製表示。
在C語言中整型常數可用十進制、八進制和十六進制三種數製表示。
1、八進制整常數必須以0開頭,即以0作為八進制數的前綴。數碼取值為0~7。八進制數通常是無符號數。
(1)以下各數是合法的八進制數:
015、0101、0135777。
(2)以下各數不是合法的八進制數:
252(無前綴0)、0386(包含了非八進制數碼)、-0127。
2、十六進制整常數的前綴為0X或0x。其數碼取值為0~9,A~F或a~f。
(1)以下各數是合法的十六進制整常數:
0X2A(十進制為42)、0XA0 (十進制為160)、0XFFFF (十進制為65535)。
(2)以下各數不是合法的十六進制整常數:
5A (無前綴0X)、0X3H (含有非十六進制數碼)。
3、十進制整常數沒有前綴。其數碼為0~9。
(1)以下各數是合法的十進制整常數:
235、-528、65535、1627。
(2)以下各數不是合法的十進制整常數:
023 (不能有前導0)、23D (含有非十進制數碼)。
(8)c語言進制數擴展閱讀:
C語言的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
C語言包含有各種控制語句僅有9種,關鍵字也只有32個,程序的編寫要求不嚴格且多以小寫字母為主,對許多不必要的部分進行了精簡。
實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故C語言擁有非常簡潔的編譯系統。
C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。
❾ C語言中十進制數和十六進制數能直接運算嗎
C語言程序中,十進制和十六進制實際是互通的。
十六進制數由數字0~9、字母A~F(或a~f)組成。把十六進制數按權展開、相加即得十進制數。
現實中十六進制數和十進制數不可以直接相加,如是在電腦上的話是可以的,何種進制數在電腦上都是以二進制的形式表示的,在電腦編寫程序時是可以相加的。
十進制數除base取余法,即十進制數除以base,余數為權位上的數,得到的商值繼續除以base,依此步驟繼續向下運算直到商為0為止。
(9)c語言進制數擴展閱讀
十六進制轉十進制的源代碼如下:
#include<stdio.h>
#include<string.h>
int main(void)
{
char s[20]
hex[20];
int i,j,num;
gets(s);
/*取出字元串中的十六進制字元*/
for(i=0,j=0;s[i]!='