c語言入門(二)進製

2021-06-22 18:21:24 字數 4623 閱讀 8126

cup:**處理器

儲存器:記憶體(ram.rom.cache高速緩衝儲存器)---用於存放當前處於活動狀態的程式和資料,即微機執行所需要的程式和資料,它與cpu之間進行頻繁的交換資料.

外存:使用者可用於長期儲存程式/資料和檔案,有使用者管理外存中的shuju

上午:進製轉換,位運算,儲存資料

進製就是進製,對於任何一種進製,———x進製,就表示某一位置上的數運算時,逢x進一位,十六進製制就是逢十六進一,二進位制就是逢二進一.a~f(10~15),計算機經常用到的是二進位制和十六進製制.(二進位制的位權就是以2為底的冪--二進位制資料也是採用位置計數法,其位權是以2為底的冪。例如二進位制資料110.11,其權的大小順序為2^2、2^1、2^0、2^-1、2^-2。對於有n位整數,m位小數的二進位制資料用加權係數展開式表示,可寫為:

(a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)+……+a(-m)×2^(-m)

二進位制資料一般可寫為:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2)

進製轉換:

秘訣連除倒取餘

777/2=388–1

388/2=194–0

194/2=97–0

97/2=48–1

48/2=24–0

24/2=12–0

12/2=6–0

6/2=3–0

3/2=1–1

1/2=0–1     1100001001

10進製轉其他,小數乘以位權(比如二進位制就是2)取整(正取)6或者8位,捨棄末尾,整數部分除以位權(2)取餘(倒取餘)

n進製轉十進位制:(二進位制轉十進位制,二進位制轉十六進製制)

秘訣:當前位上的數乘以計數的位數減1次方,(位數*位權的n-1次方)

二:位運算(a10b11c12——)

參與運算的量按二進位制位進行計算

按位&(同時為真才為真—計算機中的清零 )/

按位|(只要有一位為真)/

按位~/

按位異或^/

左移<

右移》(右移一位相當於除2);高位以0補齊,低位丟棄 //

右移運算對於負數

,分為邏輯右移

(高位補

0),和算術右移——計算機常用-

(高位補

1)inta=3

;int

number6=a<<2;

//左移兩位

printf

("118

左移兩位的結果為

:%d\n"

,number6);

intnumber7=-

3>>2;

//左移兩位

printf("3

左移兩位的結果為

:%d\n"

,number7);

118左移兩位的結果為

:123

左移兩位的結果為:-1

乙個位元組(byte)表示8個二進位制位(bit);網速500k/s====500*1024byte;

最高位為符號位(最左邊)

負數以補碼形式在計算機中表示:負數的補碼形式:(負數:除了符號,其他按位取反,再加1)

正數的原始碼和補碼是相同的

-3右移動2位

原始碼: 1000 0011

反碼: 1111 1100

+1變補碼:

1111 1101

右移動兩位:

11111111

取反:100000 

加1:100001

輸出結果為-1

託字元^(按位異或)相同為0,異或為1

三:檢視資料在記憶體中的儲存

從低到高訪問,從高到低分配存.

zuoye:

/*1.

比較並輸出三個數的最大值

,最小值

.以及中間值.

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

if (a

/*2.輸入3

個數,判斷是否能構成三角形。

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

if (a+b>c&&b+c>a&&a+c>b)

else printf("不可以構成三角形\n");

/*3.

鐵路託運行李規定:行李重不超過

50公斤的,托運費按

0.15

元每公斤計算,如果超過

50公斤,超出部分每公斤加收

0.1元。程式設計實現上述功能。

float weight=0;

float cost=0;

scanf("%f",&weight);

if (weight<=50)

else cost=50*0.15+(weight-50)*(0.15+0.1);

printf("%.2f\n",cost);

/*4.

有乙個函式:

x<1

的時候,

y = x

;1<=x<10

的時候,

y=2x-1

;x>=10

的時候,

y=3x-11

。寫一段程式,輸入

x,輸出y值。

*/

int x=0;

int y=0;

scanf("%d",&x);

if (x<1)

else if (x>=10)

else y=2*x-1;

printf("%d\n",y);

5.編制乙個完成兩個數四則運算程式。如:使用者輸入34+56則輸出結果為90.00,要求運算結果保留2位有效小數,使用者輸入時將2個運算數以及運算子都輸入,根據運算子求結果。

float a=0,b=0;

char c;

scanf("%f%c%f",&a,&c,&b);

switch (c)

/*6.

編寫乙個程式,輸入某人的身高(

cm)和體重(

kg),按下式確定其體重是否為標準、過胖或過瘦。(

1)標準體重=身高

-110;(2

)超過標準體重

5kg(即大於

5kg)為過胖;(

3)低於標準體重

5kg(即小於

5kg)為過瘦

float hight=0;

float weight=0;

scanf("%f%f",&hight,&weight);

if (hight-110-weight

else if(hight-110-weight>5)

else printf("標準\n");

編寫程式計算公升高:每個做父母的都關心自己孩子**後的身高,據有關生理衛生知識與數理統計分析表明,影響小孩**後身高的因素有遺傳、飲食習慣與堅持體育鍛煉等。小孩**後身高與其父母身高和自身性別密切相關。設faheight為其父身高,moheight為其母身高,身高**公式為:

男性**時身高 = (faheight + moheight) * 0.54(cm)

女性**時身高 = (faheight * 0.923 + moheight) / 2(cm)

此外,如果喜愛體育鍛煉,那麼可增加身高2%,如果有良好的衛生飲食習慣,那麼可增加身高1.5%。

程式要求:父親的身高與母親的身高、小孩的性別、是否喜愛體育鍛煉和是否有良好的衛生飲食習慣也從鍵盤上輸入,最終輸出**的身高。

float faheight=0,moheight=0;

char ***=0;

char sports=0;

char habit=0;

float tagetheight=0;

printf("請輸入父親的身高:");

scanf("%f",&faheight);

printf("請輸入母親的身高:");

scanf("%f",&moheight);

getchar();

printf("請輸入性別(m男;f女):");

scanf("%c",&***);

getchar();

printf("請輸入是否喜歡體育鍛煉(y喜歡;n不喜歡):");

scanf("%c",&sports);

getchar();

printf("請輸入是否有良好飲食習慣(y是;n否):");

scanf("%c",&habit);

if (***=='m')

else tagetheight=(faheight * 0.923 + moheight) / 2;

if (sports=='y')

if (habit=='y')

printf("小孩的身高位%fcm\n",tagetheight);

c 二進位制 負數 二進位制概念

我們平時認識的數字比如1 2 3 4等數字叫做十進位制數字,我們可以看懂,但是計算機無法運算,如果計算機要計算這些數字就得將這些數字轉換成計算機能讀懂的資料,計算只能讀懂二進位制數字,二進位制的數字有什麼特徵呢?二進位制就是由1和0組成的數字,那麼為什麼計算機要使用二進位制資料呢?下面作為了解。a ...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

C語言讀寫二進位製流

學習赫夫曼編碼,對於如何把二進位製流存入二進位制檔案或如何從二進位制檔案讀出二進位製流進行了研究,總結網上諸多大俠的片言隻語,實現了這一功能。宣告 本人只是在學習c語言,不能跟專業人士相提並論。原理是用一組掩碼與要讀出或寫入的字元進行位運算,逐個寫入或輸出二進位製碼流。原始碼 include def...