當前位置:首頁 » 編程語言 » c語言中的數字二進制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中的數字二進制

發布時間: 2023-03-13 06:46:11

『壹』 c語言二進制怎麼表示

c++中負數存儲時,不是簡單的將符號位置為1,而是採用補碼的形式存儲的,負數最高位為符號位,也就是1,其餘全部取反,然後再加1。

假如操作系統是32位,-1的二進制存儲不是:1000
0000 0000 0001,而是:1111 1111 1111 1110+1即1111 1111 1111 1111。

(1)c語言中的數字二進制擴展閱讀:

C語言面向過程,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。

『貳』 C語言二進制數怎麼寫

c語言中沒有二進制的格式輸出符號.
你可以用itoa函數很方便的將一個10進制int轉變成二進制字元串.
如:
int i;
char s[128];
scanf("%d",&i);
itoa(i, s, 2); /*3個參數,第一個是待轉換的數,第二個是存放轉換後的字元串,第三個即需要轉換的進制*/
printf("該數轉換為二進制是: [%s]\n",s);

補充一點,itoa函數的頭文件是stdlib.h
(你自己不查以前已經有的問題)

『叄』 c語言里二進制數

計算機數據(整數類)有三個概念原碼、
反碼
、補碼,而計算機實際應用中所用到的只有補碼!
以一個位元組(8bits)為例說明
原碼:第一位為符號位,其餘位表示數值,
如0
000
0001表示1
,1
000
0001表示-1
反碼:正數原碼即是其反碼,負數反碼為:符號位不動,其餘位取反,即0變1,1變0,如:-1反=1
111
1110
補碼:正數原碼即是其補碼,負數補碼為反碼+1,即-1補=1
111
1111
補碼才是計算機中存儲的數據形式!!原碼、反碼只是兩個中間概念詞,應用中用不到,是計算機發展過程中的中間產物。

『肆』 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輸出為小寫字母

}

(4)c語言中的數字二進制擴展閱讀

C語言中定義整型數據的十六進制數:

unsigned int hex_val = 0x123;

//定義了一個整型變數並賦以初始值為一個十六進制常量。

if (scanf("%x", &hex_val) != EOF)

{

printf("它的八、十進制分別=%o、%d ", hex_val, hex_val);

}

『伍』 c語言中的二進制

假設你是用的平台int做4位元組處理,short做2位元組處理

65535即十六進製表示的0xFFFF,即二進製表示,兩個位元組全1

所以2位元組的short輸出就是-1,而4位元組的int表示是原數65535

『陸』 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語言不能直接表示二進制,沒有數字前綴表示。
例子如下:
假設有一個
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語言中實數的二進制形式,是怎樣存儲的

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