c語言二進制類型
⑴ c語言的二進制,八進制,十進制是什麼意思
計算機中常用的數的進制主要有:二進制、八進制、十六進制,學習計算機要對其有所了解。
2進制,用兩個阿拉伯數字:0、1;
8進制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;
10進制,用十個阿拉伯數字:0到9;
16進制就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫
一、二進制轉換十進制
例:二進制 「1101100」
1101100 ←二進制數
6543210 ←排位方法
例如二進制換算十進制的演算法:
1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20
↑ ↑
說明:2代表進制,後面的數是次方(從右往左數,以0開始)
=64+32+0+8+4+0+0
=108
二、二進制換算八進制
例:二進制的「10110111011」
換八進制時,從右到左,三位一組,不夠補0,即成了:
010 110 111 011
然後每組中的3個數分別對應4、2、1的狀態,然後將為狀態為1的相加,如:
010 = 2
110 = 4+2 = 6
111 = 4+2+1 = 7
011 = 2+1 = 3
結果為:2673
⑵ 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
利用短除法可以輕松地將十進制轉換成二進制,在編程中是這樣用的,以下給出代碼:
(2)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;
}
⑶ 能不能給我講講C語言中實數的二進制形式,是怎樣存儲的
1、float類型數字在計算機中用4個位元組(32位)存儲。
遵循IEEE-754格式標准:
一個浮點數由3部分組成:符號位s(1位)和、指數e(8位)、底數m(23位)
2、格式
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S:符號位
E:指數,十進制指數加上127後的值得二進制數據
M:底數
3、符號位
指底數的符號,可正可負。
4、指數
佔用8bit的二進制數,可表示數值范圍為0-255。
但是指數可正可負,所以,IEEE規定,此處算出的次方必須減去127才是真正的指數。
所以,float類型的指數可從-126到128
5、底數
實際是佔用24bit的一個值,但是最高位始終為1,所以,最高位省去不存儲,在存儲中佔23bit
科學計數法。
再舉一例:
17.625在內存中的存儲
首先要把17.625換算成二進制:10001.101
在將10001.101右移,直到小數點前只剩1位:
1.0001101 * 2^4 因為右移動了四位
底數:因為小數點前必為1,所以IEEE規定只記錄小數點後的就好。所以,此處的底數為:0001101
指數:實際為4,必須加上127(轉出的時候,減去127),所以為131。也就是10000011
符號:整數,所以是0
綜上所述,17.625在內存中的存儲格式是:
01000001 10001101 00000000 00000000
⑷ c語言中的數據類型及二進制 八進制 十六進制之間的轉換
c語言算術表達式的計算,在計算過程中,每一步計算所得結果的數據類型由參與運算的運算對象決定,相同數據類型的兩個對象運算,結果數據類型不變,不同數據類型的運算對象進行運算,結果的數據類型由高精度的運算對象決定。精度的高低:double>float>int
需要注意的是,數據類型的轉換是在計算過程中逐步進行的,整個表達式結果的數據類型一定與表達式中出現的精度最高的數據相同,但是具體得到數據值是逐步得到的,例如:int
x=1,y=3;
double
k=1573.267;
x
/
y
*
k
這個表達式計算結果的數據類型是double,
計算結果的答案是
0.0
因為在第一步
x/y
的計算中
結果是一個整型數據
0
第二步計算
0
*
1573.267
結果是一個double類型的數據,但數值是0.0
也就是說,算術表達式計算結果的數據類型與運算的優先順序沒有關系,一定具有表達式中精度最高的數據類型,但是具體得到數據結果數值,與優先順序可就有關系啦。
⑸ 怎麼在C語言裡面輸入二進制數字
c語言不能直接表示二進制,沒有數字前綴表示。
例子如下:
假設有一個
int
類型的數,值為5,那麼,我們知道它在計算機中表示為:
00000000
00000000
00000000
00000101
5轉換成二制是101,不過int類型的數佔用4位元組(32位),所以前面填了一堆0。
(5)c語言二進制類型擴展閱讀
進制是一種計數的方式,常用的有二進制、八進制、十進制、十六進制。任何數據在計算機內存中都是以二進制的形式存放的。
我對進制的個人理解,二進制數是以2為計算單元,滿2進1位的數;八進制數是以8為計算單元,滿8進1位的數。
對於任何一個數字,我們都可以用不同的進制來表示,比如,十進制數12,用二進製表示為1100,用八進製表示為14,用十六進製表示為0xc。
⑹ c語言的二進制、八進制、十六進制之類的進制是什麼意思舉幾個例子。
進制---即逢幾進一的意思;二進制即逢二進一,八進制即逢八進一,十六進制即逢十六進一
如:十進制逢時進一,計數規則為:0、1、2、3、4、5、6、7、8、9;數到10的時候向前進1變為10、11等等
二進制是逢二進一,計數規則為0、1,該數到2時向前進1,變為10(對應十進制的2)、11(對應十進制的3)
⑺ C語言中二進制數字的前綴是什麼
c語言不能直接表示二進制,沒有數字前綴表示。
例子如下:
假設有一個 int 類型的數,值為5,那麼,我們知道它在計算機中表示為:
00000000 00000000 00000000 00000101
5轉換成二制是101,不過int類型的數佔用4位元組(32位),所以前面填了一堆0。
(7)c語言二進制類型擴展閱讀
進制是一種計數的方式,常用的有二進制、八進制、十進制、十六進制。任何數據在計算機內存中都是以二進制的形式存放的。
我對進制的個人理解,二進制數是以2為計算單元,滿2進1位的數;八進制數是以8為計算單元,滿8進1位的數。
對於任何一個數字,我們都可以用不同的進制來表示,比如,十進制數12,用二進製表示為1100,用八進製表示為14,用十六進製表示為0xC。
⑻ C語言二進制怎麼表示
c++中負數存儲時,不是簡單的將符號位置為1,而是採用補碼的形式存儲的,負數最高位為符號位,也就是1,其餘全部取反,然後再加1。
假如操作系統是32位,-1的二進制存儲不是:1000
0000 0000 0001,而是:1111 1111 1111 1110+1即1111 1111 1111 1111。
(8)c語言二進制類型擴展閱讀:
C語言面向過程,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。