① c語言中b代表二進制,q代表八進制,d代表十進制,那麼什麼字元代表十六進制呢
H: hexadecimal 十六進制的
其他進制的代表字元:
B: binary 二進制的
Q: quaternary 四進制的
D: decimal 十進制的
O: octal 八進制的.
(1)c語言程序中運行的數制是擴展閱讀:
表示方式
C語言、C++、Shell、Python、Java語言及其他相近的語言使用字首「0x」,例如「0x5A3」。開頭的「0」令解析器更易辨認數,而「x」則代表十六進制(就如「O」代表八進制)。在「0x」中的「x」可以大寫或小寫。
對於字元量C語言中則以x+兩位十六進制數的方式表示,如xFF,同時也以H: hexadecimal 代表十六進制的。
② c源程序不能表示的數制是
c源程序不能表示的數制是:二進制。
C語言源程序不能表示二進制,在C語言中,所有的數值型常量都帶有符號,所以整型數量只區別整型和長整型兩種形式,整型常量和長整型常量均可用十進制、八進制、十六進制3種形式表示。
在程序運行過程中,其值不能被改變的量稱為常量。常量也分為整型、實型、字元型等。以上是常量所具有的類型屬性,這些類型決定了各種常量所佔存儲空間的大小和數的表示範圍。在C程序中,常量是直接以自身的存在形式體現其值和類型。
(2)c語言程序中運行的數制是擴展閱讀
二進制對計算機的重要性:
二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。
當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。【計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0】
20世紀被稱作第三次科技革命的重要標志之一的計算機的發明與應用,因為數字計算機只能識別和處理由『0』.『1』符號串組成的代碼。其運算模式正是二進制。
19世紀愛爾蘭邏輯學家喬治布爾對邏輯命題的思考過程轉化為對符號"0''.''1''的某種代數演算,二進制是逢2進位的進位制。0、1是基本算符。因為它只使用0、1兩個數字元號,非常簡單方便,易於用電子方式實現。
③ C語言中 怎樣區分八進制 十進制 二進制
編程語言通常規定是以0開頭的數字是八進制數,以0x開頭的數字是十六進制數,其餘的就是十進制數,至於你說的「十進制是D表示 二進制是B 十六進制是H」在編寫程序時是不能用的,那隻是為了方便,書寫時(不是在計算機上編程時)用到的(只對於C語言編程,匯編語言編程時,是寫上的),你的程序 int x=011中,x是用八進製表示的一個數字,他是9.後面的printf("%d\n",++x);是以10進制形式列印結果(%d的作用),所以程序運行的結果是9.
④ C語言中的二進制、十進制、十六進制各是什麼意思
計算機中常用的數的進制主要有:二進制、八進制、十六進制,學習計算機要對其有所了解。 x0dx0a2進制,用兩個阿拉伯數字:0、1; x0dx0a8進制,用八個阿拉伯數字:0、1、2、3、4、5、6、7; x0dx0a10進制,用十個阿拉伯數字:0到9; x0dx0a16進制就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。 x0dx0ax0dx0a以下簡介各種進制之間的轉換方法: x0dx0a一、二進制轉換十進制 x0dx0a例:二進制 「1101100」 x0dx0a1101100 ←二進制數 x0dx0a6543210 ←排位方法 x0dx0ax0dx0a例如二進制換算十進制的演算法: x0dx0a1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20 x0dx0a↑ ↑ x0dx0a說明:2代表進制,後面的數是次方(從右往左數,以0開始) x0dx0a=64+32+0+8+4+0+0 x0dx0a=108 x0dx0ax0dx0a二、二進制換算八進制 x0dx0a例:二進制的「10110111011」 x0dx0a換八進制時,從右到左,三位一組,不夠補0,即成了: x0dx0a010 110 111 011 x0dx0a然後每組中的3個數分別對應4、2、1的狀態,然後將為狀態為1的相加,如: x0dx0a010 = 2 x0dx0a110 = 4+2 = 6 x0dx0a111 = 4+2+1 = 7 x0dx0a011 = 2+1 = 3 x0dx0a結果為:2673 x0dx0ax0dx0a三、二進制轉換十六進制 x0dx0a十六進制換二進制的方法也類似,只要每組4位,分別對應8、4、2、1就行了,如分解為: x0dx0a0101 1011 1011 x0dx0a運算為: x0dx0a0101 = 4+1 = 5 x0dx0a1011 = 8+2+1 = 11(由於10為A,所以11即B) x0dx0a1011 = 8+2+1 = 11(由於10為A,所以11即B) x0dx0a結果為:5BB x0dx0ax0dx0a四、二進制數轉換為十進制數 x0dx0a二進制數第0位的權值是2的0次方,第1位的權值是2的1次方?? x0dx0a所以,設有一個二進制數:0110 0100,轉換為10進制為: x0dx0a計算: 0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 x0dx0ax0dx0a五、八進制數轉換為十進制數 x0dx0a八進制就是逢8進1。 x0dx0a八進制數採用 0~7這八數來表達一個數。 x0dx0a八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方?? x0dx0a所以,設有一個八進制數:1507,轉換為十進制為: x0dx0a計算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 x0dx0a結果是,八進制數 1507 轉換成十進制數為 839 x0dx0ax0dx0a六、十六進制轉換十進制 x0dx0a例:2AF5換算成10進制 x0dx0a直接計算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997 x0dx0a(別忘了,在上面的計算中,A表示10,而F表示15)、 x0dx0ax0dx0a現在可以看出,所有進制換算成10進制,關鍵在於各自的權值不同。 x0dx0a假設有人問你,十進數 1234 為什麼是 一千二百三十四?你盡可以給他這么一個算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100 x0dx0ax0dx0a十進制與二進制轉換之相互演算法 x0dx0a十進制轉二進制: x0dx0ax0dx0a用2輾轉相除至結果為1 x0dx0ax0dx0a將余數和最後的1從下向上倒序寫 就是結果 x0dx0ax0dx0a例如302 x0dx0ax0dx0a302/2 = 151 餘0 x0dx0ax0dx0a151/2 = 75 餘1 x0dx0ax0dx0a75/2 = 37 餘1 x0dx0ax0dx0a37/2 = 18 餘1 x0dx0ax0dx0a18/2 = 9 餘0 x0dx0ax0dx0a9/2 = 4 餘1 x0dx0ax0dx0a4/2 = 2 餘0 x0dx0ax0dx0a2/2 = 1 餘0 x0dx0ax0dx0a故二進制為100101110 x0dx0ax0dx0a二進制轉十進制 x0dx0ax0dx0a從最後一位開始算,依次列為第0、1、2...位 x0dx0ax0dx0a第n位的數(0或1)乘以2的n次方 x0dx0ax0dx0a得到的結果相加就是答案 x0dx0ax0dx0a例如:01101011.轉十進制: x0dx0ax0dx0a第0位:1乘2的0次方=1 x0dx0ax0dx0a1乘2的1次方=2 x0dx0ax0dx0a0乘2的2次方=0 x0dx0ax0dx0a1乘2的3次方=8 x0dx0ax0dx0a0乘2的4次方=0 x0dx0ax0dx0a1乘2的5次方=32 x0dx0ax0dx0a1乘2的6次方=64 x0dx0ax0dx0a0乘2的7次方=0 x0dx0ax0dx0a然後:1+2+0 x0dx0ax0dx0a+8+0+32+64+0=107. x0dx0ax0dx0a二進制01101011=十進制107. x0dx0ax0dx0a一、二進制數轉換成十進制數 x0dx0ax0dx0a由二進制數轉換成十進制數的基本做法是,把二進制數首先寫成加權系數展開式,然後按十進制加法規則求和。這種做法稱為"按權相加"法。 x0dx0ax0dx0a二、十進制數轉換為二進制數 x0dx0ax0dx0a十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。 x0dx0ax0dx0a1. 十進制整數轉換為二進制整數 x0dx0ax0dx0a十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。 x0dx0ax0dx0a2.十進制小數轉換為二進制小數 x0dx0ax0dx0a十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。 x0dx0ax0dx0a然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。 x0dx0ax0dx0a1.二進制與十進制的轉換 x0dx0ax0dx0a(1)二進制轉十進制
方法:"按權展開求和" x0dx0ax0dx0a例: x0dx0ax0dx0a(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10 x0dx0ax0dx0a=(8+0+2+1+0+0.25)10 x0dx0ax0dx0a=(11.25)10 x0dx0ax0dx0a(2)十進制轉二進制 x0dx0ax0dx0a· 十進制整數轉二進制數:"除以2取余,逆序輸出" x0dx0ax0dx0a例: (89)10=(1011001)2 x0dx0ax0dx0a2 89 x0dx0ax0dx0a2 44 ?? 1 x0dx0ax0dx0a2 22 ?? 0 x0dx0ax0dx0a2 11 ?? 0 x0dx0ax0dx0a2 5 ?? 1 x0dx0ax0dx0a2 2 ?? 1 x0dx0ax0dx0a2 1 ?? 0 x0dx0ax0dx0a0 ?? 1 x0dx0ax0dx0a· 十進制小數轉二進制數:"乘以2取整,順序輸出" x0dx0ax0dx0a例: x0dx0ax0dx0a(0.625)10= (0.101)2 x0dx0ax0dx0a0.625 x0dx0ax0dx0aX 2 x0dx0ax0dx0a1.25 x0dx0ax0dx0aX 2 x0dx0ax0dx0a0.5 x0dx0ax0dx0aX 2 x0dx0ax0dx0a1.0 x0dx0ax0dx0a2.八進制與二進制的轉換 x0dx0ax0dx0a例:將八進制的37.416轉換成二進制數: x0dx0ax0dx0a37 . 4 1 6 x0dx0ax0dx0a011 111 .100 001 110 x0dx0ax0dx0a即:(37.416)8 =(11111.10000111)2 x0dx0ax0dx0a例:將二進制的10110.0011 轉換成八進制: x0dx0ax0dx0a0 1 0 1 1 0 . 0 0 1 1 0 0 x0dx0ax0dx0a2 6 . 1 4 x0dx0ax0dx0a即:(10110.011)2 =(26.14)8 x0dx0ax0dx0a3.十六進制與二進制的轉換
例:將十六進制數5DF.9 轉換成二進制: x0dx0ax0dx0a5 D F . 9 x0dx0ax0dx0a0101 1101 1111.1001 x0dx0ax0dx0a即:(5DF.9)16 =(10111011111.1001)2 x0dx0ax0dx0a例:將二進制數1100001.111 轉換成十六進制: x0dx0ax0dx0a0110 0001 . 1110 x0dx0ax0dx0a6 1 . E x0dx0ax0dx0a即:(1100001.111)2 =(61.E)16
⑤ 在進行c語言程序設計時可以使用的數據類型與什麼有關
在進行c語言程序設計時可以使用的數據類型與進制有關。
在C語言里,寫003,是8進制的,開頭是0的數字C語言會當成8進制;寫0xL,是錯的,0x後面只能跟ABCDEF這6個字母(不區分大小寫)。
輸出123.456703的問題是因為浮點數在計算機中表示是二進製表示的,但浮點數常量都是十進制,十進制和二進制之間不是一定能轉換成有限數字的(有可能無限循環),所以會有一些微小的誤差。
形式區別
巴比倫60進位制以一個上大下小的楔形代表1,兩個並列楔形代表2,三個並列楔形代表3,上二個楔形下二個楔形代表4,上三楔下二楔代表5,上三楔下三楔代表6,上四楔下三楔代表7,上四楔下四楔代表8,上五楔下四楔代表9;一個左小右大橫楔代10,兩個橫楔並排代表20,三個橫楔並排代表30,四個橫楔並排代表40。
⑥ C語言 數制
二進制位數比較多,書寫和閱讀不方便,於是用十六進制來書寫,這樣方便一些,例如,小寫字母
a的ASCII碼是97,如果使用二進制,那就是01100001,比較長,不好閱讀,而二進制可以方便地轉成對應的十六進製表示,只要把每四位二進制換成一位十六進制即可(反之亦然),
01100001分成兩組,每組四個:0110 0001,
0110對應十六進制是6
0001對應十六進制是1
,所以0110 0001對應十六進制是61
⑦ 在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 (含有非十進制數碼)。
(7)c語言程序中運行的數制是擴展閱讀:
C語言的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
C語言包含有各種控制語句僅有9種,關鍵字也只有32個,程序的編寫要求不嚴格且多以小寫字母為主,對許多不必要的部分進行了精簡。
實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故C語言擁有非常簡潔的編譯系統。
C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。
⑧ c語言裡面 %d是十進制 %o是八進制 %x是十六進制 %多少是二進制
c語言中沒有表示二進制的字元,但是你可以根據十進制、八進制或者十六進制轉換一下。
可以利用短除法,將十進制轉變成二進制,我們一般的思路是這樣的,下面給出一個例子:
把20轉換成二進制:
20/2=10........余數為0 最低位
10/2=5..........余數為0
5/2=2............余數為1
2/2=1............余數為0
1/2=0............余數為1 最高位
則20換成二進制後是10100
利用短除法可以輕松地將十進制轉換成二進制,在編程中是這樣用的,以下給出代碼:
(8)c語言程序中運行的數制是擴展閱讀:
在做數據讀寫傳輸時最常用也最直觀的莫過於十進制數,但是在不同應用場合、存儲的方便在C語言開發時候也常採用二進制、八進制和十六進制存儲數據。
進制是一種計數機制,對於任何一種進制,如:xx進制,就表示某一位置上的數運算時逢 xx 進一位。例如:時間60′60′,分鍾就會加 1,這就是六十進制。計算機中常用的進制有二進制、八進制、十進制、十六進制。
下面給出一個使用C語言編程實現任意進制數(2-16進制)轉換為其他任意進制數(2-16進制)的小程序代碼:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int TenNum(char a[],int B); //將輸入的數字轉換成10進制數
void Numchange(int m, int B); //將轉換好了的10進制數轉換為所需進制數
int TenNum(char a[], int B)
{
int len, i, num;
int sum = 0;
len = strlen(a); //求得字元串長度
for (i = 0; i < len; i++)
{
if (a[i] >= '0' && a[i] <= '9')
num = a[i] - '0';
else if (a[i] >= 'A' && a[i] <= 'F')
num = a[i] - 'A' + 10;
sum = sum * B + num;
}
return sum;
}
void Numchange(int m, int B)
{
int n;
if (m)
{
Numchange(m / B, B);
n = m % B;
if (n < 10)
printf("%d", n); //小於10直接輸出
else
printf("%c", n + 55); //大於10轉換成字元輸出
}
}
int main()
{
int B, b;
char a[20];
printf("請輸入待轉換數的進制(2-16):");
do {
scanf_s("%d", &B);
} while (B < 2 && B > 16);
printf("請輸入待轉換數:");
getchar();
gets_s(a); //將輸入的n進制數存放在數組a中
int m = TenNum(a, B); //將輸入的數字轉換成十進制數
printf("請輸入需要轉成幾進制數(2-16):");
do {
scanf_s("%d", &b);
} while (B < 2 && B > 16);
printf("%d進制數%s轉換為%d進制數的結果為:",B,a,b);
Numchange(m, b); //將十進制數轉換為所需進制數
printf(" ");
system("pause");
return 0;
}