01進(jìn)制轉(zhuǎn)換和變量

計(jì)算機(jī)內(nèi)存存儲(chǔ)數(shù)據(jù)的部位有硬盤和內(nèi)存

硬盤存儲(chǔ)的是可見數(shù)據(jù),內(nèi)存存儲(chǔ)的是不可見數(shù)據(jù)

硬盤,內(nèi)存所存儲(chǔ)的數(shù)據(jù)都是二進(jìn)制數(shù)據(jù)

我們使用的計(jì)算機(jī)室為了實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)棚唆,數(shù)據(jù)運(yùn)算叹誉,數(shù)據(jù)管理

[1]我們(程序員)必須了解數(shù)據(jù)是如何存儲(chǔ)到計(jì)算機(jī)中的

[2]我們(程序員)必須了解,我們?nèi)绾瓮ㄟ^代碼將數(shù)據(jù)存儲(chǔ)到計(jì)算機(jī)中庙曙,以及如何使用這些數(shù)據(jù)

[對(duì)于人類]我們?nèi)祟愅ǔ?duì)于十進(jìn)制數(shù)據(jù)更加熟悉

[對(duì)于計(jì)算機(jī)]計(jì)算機(jī)通常用二進(jìn)制來存儲(chǔ)數(shù)據(jù),因?yàn)槎M(jìn)制對(duì)于計(jì)算機(jī)而言比較容易實(shí)現(xiàn)

內(nèi)存存數(shù)數(shù)據(jù)的基本單元是三極管(導(dǎo)通,截止椭豫,反向擊穿)

計(jì)算機(jī)中表示數(shù)據(jù)的方式有 二進(jìn)制,八進(jìn)制旨指,十進(jìn)制赏酥,十六進(jìn)制

二進(jìn)制:由0和1兩種字符組成,前綴為0b谆构,例子:0b1001

八進(jìn)制:由0~7八種字符組成裸扶,前綴為0,例子:0755

[應(yīng)用:文件權(quán)限]

d rwxr-xr-x=d rwx r-x r-x

= 111 101 101

= 7 5 5

=0755

第一組:文件所有者得權(quán)限

第二組:文件所有者所在小組的其他成員的權(quán)限

第三組:文件所有者的小組之外其他小組的權(quán)限

十進(jìn)制:由0~9十種字符組成

十六進(jìn)制:由09和AF十六種字符組成搬素,前綴為0x呵晨,例子:0x1a,0x799

[應(yīng)用:顏色表示]

顏色的三原色:紅 綠 藍(lán)

#FF0000 —紅色

#00FF00 —綠色

#000000 —黑色

#FFFFFF —白色

[注]八進(jìn)制蔗蹋,十六進(jìn)制的誕生時(shí)為了解決兩個(gè)問題:

(1)二進(jìn)制數(shù)據(jù)本身不是很直觀(無法很容易地看懂)

(2)十進(jìn)制數(shù)據(jù)轉(zhuǎn)成二進(jìn)制數(shù)據(jù)何荚,轉(zhuǎn)換過程必須使用除2法,比較麻煩

1.二進(jìn)制 轉(zhuǎn) 十進(jìn)制

0b10010=0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 0 * 2^3 + 1 * 2^4

=1 * 2^1 + 1 * 2^4

=18

[注]二進(jìn)制數(shù)據(jù) 從右往左數(shù)猪杭,依次是 第0餐塘,1,2......位

轉(zhuǎn)換方法:二進(jìn)制數(shù)據(jù)的每一位數(shù)值皂吮,乘以2的位數(shù)次方戒傻,然后全部相加得到十進(jìn)制結(jié)果

2.十進(jìn)制 轉(zhuǎn) 二進(jìn)制

18=0b10010

轉(zhuǎn)換方法:除2法,余數(shù)從下往上數(shù)

3.二進(jìn)制 轉(zhuǎn) 八進(jìn)制

0b10010=010 010

= 2 2

=022

轉(zhuǎn)換方法:二進(jìn)制轉(zhuǎn)八進(jìn)制蜂筹,從右往左需纳,每三位一取作為一組,高位不夠補(bǔ)0

4.二進(jìn)制 轉(zhuǎn) 十六進(jìn)制

0b10010=0001 0010 0b111101=0011 1101

= 1 2 = 3 d

=0x12 =0x3d

轉(zhuǎn)換方法:二進(jìn)制轉(zhuǎn)十六進(jìn)制艺挪,從右往左不翩,每四位一取作為一組,高位不夠補(bǔ)0

二進(jìn)制數(shù)據(jù)的三種形態(tài):原碼,反碼口蝠,補(bǔ)碼

任何一個(gè)數(shù)據(jù)存儲(chǔ)到計(jì)算機(jī)中器钟,必須分配有固定大小的內(nèi)存單元

而在計(jì)算機(jī)中,最小的數(shù)據(jù)單元為字節(jié)

1字節(jié) == 8個(gè)二進(jìn)制位

1.原碼

一個(gè)二進(jìn)制數(shù)據(jù)的原碼是由符號(hào)位和數(shù)值位構(gòu)成妙蔗,符號(hào)位占一位傲霸,其他位就是數(shù)值位。符號(hào)位在最高位

正數(shù)的符號(hào)位為0眉反,負(fù)數(shù)的符號(hào)位為1

在確定字節(jié)數(shù)的情況下昙啄,最高位作為符號(hào)位,其他位用來表示數(shù)值的絕對(duì)值大小

例:1字節(jié)3的原碼 0000 0011

1字節(jié)-3的原碼 1000 0011

[結(jié)論] 二進(jìn)制的原碼無法正確運(yùn)算寸五,計(jì)算機(jī)不會(huì)采用原碼來計(jì)算數(shù)據(jù)

2.反碼

在確定字節(jié)數(shù)的情況下梳凛,正數(shù)的反碼和原碼一樣;

? 負(fù)數(shù)的反碼梳杏,符號(hào)位不變伶跷,其他位取反(1變0,0變1)

例:0000 0011 1字節(jié)3的反碼

1111 1100 1字節(jié)-3的反碼

[結(jié)論] 二進(jìn)制的反碼無法正確運(yùn)算秘狞,計(jì)算機(jī)不會(huì)采用反碼來計(jì)算數(shù)據(jù)

3.補(bǔ)碼

正數(shù)的補(bǔ)碼和原碼、反碼一樣蹈集,負(fù)數(shù)的補(bǔ)碼是 反碼加1

例:0000 0011 1字節(jié)的3的補(bǔ)碼

1111 1101 1字節(jié)的-3的補(bǔ)碼

[注]對(duì)補(bǔ)碼再求一次補(bǔ)碼得到原碼

計(jì)算機(jī)中是以二進(jìn)制的形式存儲(chǔ)烁试、計(jì)算數(shù)據(jù)的

[結(jié)論]計(jì)算機(jī)是以二進(jìn)制的補(bǔ)碼形式存儲(chǔ)、計(jì)算數(shù)據(jù)的拢肆,因?yàn)檠a(bǔ)碼可以正確運(yùn)算

4.總結(jié)

八進(jìn)制數(shù)據(jù)前綴為0

十六進(jìn)制數(shù)據(jù)前綴為0x

二進(jìn)制數(shù)據(jù)前綴為0b

打印二進(jìn)制數(shù)據(jù)减响,沒有特定的打印格式!9帧支示!

打印八進(jìn)制數(shù)據(jù),用%o

打印十進(jìn)制數(shù)據(jù)鄙才,用%d

打印十六進(jìn)制數(shù)據(jù)颂鸿,用%x

程序中存在多種數(shù)據(jù),但是數(shù)據(jù)總體上講可以分為兩種:常量數(shù)據(jù) 和 變量數(shù)據(jù)

C語言中的基本數(shù)據(jù)類型有三類:整型攒庵,字符型嘴纺,浮點(diǎn)型(實(shí)型)

整型:關(guān)鍵字為 int,short浓冒,long

[注] 使用整型的關(guān)鍵字可以定義整型變量栽渴,用來存儲(chǔ)整數(shù)

字符型:關(guān)鍵字為 char

[注] 使用字符型的關(guān)鍵字可以定義字符型變量,用來存儲(chǔ)字符常量

浮點(diǎn)型:關(guān)鍵字為 float稳懒,double

[注] 使用浮點(diǎn)型的關(guān)鍵字可以定義浮點(diǎn)型變量闲擦,用來存儲(chǔ)帶小數(shù)點(diǎn)的數(shù)

標(biāo)識(shí)符的命名規(guī)則:

<1>必須由數(shù)字,字母,下劃線中的一種,或多種組成.

<2>不能以數(shù)字開頭.

<3>不能和系統(tǒng)預(yù)定義的關(guān)鍵字重復(fù)

正確表示的標(biāo)識(shí)符可以用來給變量,函數(shù),指針變量,結(jié)構(gòu)體等等命名.

[整型] int,short,long

1.整型變量的定義

int i;//在程序運(yùn)行時(shí),會(huì)向計(jì)算機(jī)申請(qǐng)4個(gè)字節(jié)內(nèi)存單元,這個(gè)內(nèi)存單元的名字就用i表示,使用i就   如果使用分配的4字節(jié)內(nèi)存單元.
short s;//會(huì)向計(jì)算機(jī)申請(qǐng)2個(gè)字節(jié)內(nèi)存單元.
long l;//會(huì)向計(jì)算機(jī)申請(qǐng)8個(gè)字節(jié)內(nèi)存單元.
//使用sizeof(xxx)  可以測(cè)得某個(gè)變量所占內(nèi)存空間大小
printf("%ld\n",sizeof(i));
printf("%ld\n",sizeof(s));
printf("%ld\n",sizeof(l))

2.整型變量的初始化

//初始化,指的是在變量定義的同時(shí)通過賦值號(hào)給變量賦一個(gè)初始值.
// = , 賦值號(hào)
int i5 = 100;

3.整型變量的賦值

//賦值,指的是在變量定義之后,給變量賦一個(gè)新值.
//后賦的值 會(huì)覆蓋掉之前存的值.
i5 = 200; 

4.整型變量的輸入/輸出

類型 輸入格式 輸出格式
int %d %d
short %hd %hd
long %ld %ld

[注] 數(shù)據(jù)輸入使用scanf語句

數(shù)據(jù)輸出使用printf語句

//可以通過scanf語句給變量i賦值,賦的值是通過鍵盤輸入的.

scanf("%d",&i);//& 是取地址符,可以取得變量的地址(內(nèi)存中的地址)

整型變量的數(shù)據(jù)表示范圍:

在程序中使用int墅冷,short纯路,long所定義的變量默認(rèn)是有符號(hào)類型的變量

有符號(hào)整型變量數(shù)據(jù)表示范圍是根據(jù)變量所占內(nèi)存大小而定的

基本整型(int) -2^31 ~ 2^31-1 -21億 ~ 21億

短整型(short) -2^15 ~ 2^15-1

長(zhǎng)整型(long) -2^63 ~ 2^63-1

0111 1111 ~~ 1111 1111 == 2^31-1

1000 0000 ~~ 0000 0000 == -2^31

1111 1111 ~~ 1111 1111 == -1

如果需要在程序中定義無符號(hào)整型變量,需要在int等關(guān)鍵字前加unsigned

unsigned int i俺榆;

無符號(hào) 基本整型(unsigned int) 0~2^32-1

無符號(hào) 短整型(unsigned short) 0~2^16-1

無符號(hào) 長(zhǎng)整型(unsigned long) 0~2^64-1

字符變量

定義字符變量使用char

定義無符號(hào)字符變量使用 unsigned char

定義字符變量是用來存儲(chǔ)字符數(shù)據(jù)的感昼,例如‘a(chǎn)’‘9’‘+’

1.定義一個(gè)字符變量

//定義(有符號(hào))字符變量使用 char
char c;//剛定義出來的字符變量,如果不初始化罐脊,值無法確定
//字符變量 占 1字節(jié)內(nèi)存
printf("%ld\n",sizeof(c));
//有符號(hào)字符變量存儲(chǔ)數(shù)據(jù)范圍:-2^7 ~ 2^7-1
//無符號(hào)字符變量存儲(chǔ)數(shù)據(jù)范圍:0 ~ 255

2.字符變量的初始化

char c1='a';
char c2='+';

3.字符數(shù)據(jù)的輸入/輸出

輸入:

scanf(“%c”定嗓,&c);

輸出:

printf(“%c\n”萍桌,c)宵溅;

浮點(diǎn)型變量

定義浮點(diǎn)型變量可以使用的關(guān)鍵字有:float,double

浮點(diǎn)型變量 用來存儲(chǔ)帶小數(shù)點(diǎn)的數(shù)

1.浮點(diǎn)型變量的定義

//float上炎,double
//float 定義的變量恃逻,稱為“單精度浮點(diǎn)型”變量,可以存儲(chǔ)小數(shù)點(diǎn)后6-8位
//double 定義的變量藕施,稱為“雙精度浮點(diǎn)型”變量寇损,可以存儲(chǔ)小數(shù)點(diǎn)后13-15位
float f;//定義float類型變量,變量f會(huì)占用4字節(jié)內(nèi)存空間
double d;//定義double類型變量裳食,變量d會(huì)占用8字節(jié)內(nèi)存空間
printf("%ld\n",sizeof(f));
printf("%ld\n",sizeof(d)); 

2.浮點(diǎn)型變量的初始化

float f1=3.14f;
double d1=6.28;
//打印浮點(diǎn)型變量的值
//輸單精度浮點(diǎn)型數(shù)據(jù)矛市,用%f
//輸出雙精度浮點(diǎn)型數(shù)據(jù),用%lf
//%f诲祸,%lf浊吏,默認(rèn)輸出的數(shù)據(jù)都保留小數(shù)點(diǎn)后6位
printf("%f\n",f1);
printf("%lf\n",d1); 

3.浮點(diǎn)型變量的賦值

//后賦的值,會(huì)覆蓋之前的值
f1=6.28f;
printf("%f\n",f1);
//我們可以通過 %m.nf 控制輸出格式
//m 救氯,數(shù)據(jù)所占總字符寬度
//n找田,小數(shù)點(diǎn)后保留n位
f1=3.14f;
printf("%.2f\n",f1);

內(nèi)存大小

類型 內(nèi)存大小(32) 內(nèi)存大小(64)
int 4 4
short 2 2
long 4 8
char 1 1
float 4 4
double 8 8

數(shù)據(jù)輸入/輸出格式

類型 輸入/輸出格式
int %d
short %hd
long %ld
char %c
float %f
double %lf
unsigned int %u
unsigned short %hu
unsigned long %lu

不同進(jìn)制數(shù)據(jù)—輸入/輸出格式

進(jìn)制 格式
八進(jìn)制 %o
十進(jìn)制 %d
十六進(jìn)制 %x

? [注] %i,可以用來輸出各種進(jìn)制的數(shù)據(jù)

輸入scanf的工作原理

程序開始執(zhí)行后着憨,會(huì)在scanf語句處停下來墩衙,等待用戶輸入數(shù)據(jù),一旦用戶輸入了數(shù)據(jù)甲抖,不管輸入了多少數(shù)據(jù)底桂、什么類型的數(shù)據(jù),通通會(huì)在用戶按下回車鍵時(shí)被寫入到[輸入緩沖區(qū)],然后scanf才從[輸入緩沖區(qū)]中去取對(duì)應(yīng)格式的數(shù)據(jù)

如果當(dāng)scanf語句從[輸入緩沖區(qū)]中取數(shù)據(jù)時(shí)惧眠,如果有scanf語句想要的特定格式的數(shù)據(jù)籽懦,直接讀走數(shù)據(jù),就不會(huì)等待用戶輸入

只有在[輸入緩沖區(qū)]中沒有數(shù)據(jù)氛魁,沒有特定格式的數(shù)據(jù)暮顺,才會(huì)等待用戶輸入

[結(jié)論] scanf讀取數(shù)據(jù)時(shí)厅篓,是首先從[輸入緩沖區(qū)]中取數(shù)據(jù)的

清除[輸入緩沖區(qū)]中的所有字符:

scanf("%*[^\n]");
scanf("%*c"); 

輸出printf的工作原理

當(dāng)程序執(zhí)行到printf語句時(shí),會(huì)把需要輸出的字符串挨個(gè)寫入到[輸出緩沖區(qū)]捶码,當(dāng)遇到[輸出緩沖區(qū)]刷新條件時(shí)羽氮,才會(huì)把[輸出緩沖區(qū)]中的數(shù)據(jù)顯示到終端輸出

緩沖區(qū)刷新的條件

<1> \n

<2> 程序結(jié)束

<3> 手動(dòng)刷新 fflush(stdout)

<4> 當(dāng)緩沖區(qū)滿 4096字節(jié)(4K)

1字節(jié)==8二進(jìn)制位

1024字節(jié)==1KB

1024KB==1MB

1024MB==1GB

1024GB==1TB

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市惫恼,隨后出現(xiàn)的幾起案子档押,更是在濱河造成了極大的恐慌,老刑警劉巖祈纯,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件令宿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡腕窥,警方通過查閱死者的電腦和手機(jī)粒没,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來簇爆,“玉大人癞松,你說我怎么就攤上這事∪肭” “怎么了响蓉?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)哨毁。 經(jīng)常有香客問我厕妖,道長(zhǎng),這世上最難降的妖魔是什么挑庶? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮软能,結(jié)果婚禮上迎捺,老公的妹妹穿的比我還像新娘。我一直安慰自己查排,他們只是感情好凳枝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著跋核,像睡著了一般岖瑰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上砂代,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天蹋订,我揣著相機(jī)與錄音,去河邊找鬼刻伊。 笑死露戒,一個(gè)胖子當(dāng)著我的面吹牛椒功,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播智什,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼动漾,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了荠锭?” 一聲冷哼從身側(cè)響起旱眯,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎证九,沒想到半個(gè)月后删豺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甫贯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年吼鳞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叫搁。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赔桌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渴逻,到底是詐尸還是另有隱情疾党,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布惨奕,位于F島的核電站雪位,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梨撞。R本人自食惡果不足惜雹洗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卧波。 院中可真熱鬧时肿,春花似錦、人聲如沸港粱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽查坪。三九已至寸宏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間偿曙,已是汗流浹背氮凝。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留望忆,地道東北人覆醇。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓朵纷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親永脓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子袍辞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容

  • 1、標(biāo)識(shí)符 什么事標(biāo)識(shí)符呢常摧?變量的名字就是標(biāo)識(shí)符搅吁。不僅限于變量名,程序中各種元素的名字落午,都屬于標(biāo)識(shí)符谎懦。例如符號(hào)常量...
    滕王閣序閱讀 926評(píng)論 0 0
  • 網(wǎng)站亂碼問題我們會(huì)經(jīng)常碰到,大多見于非英文的中文字符或其他字符亂碼溃斋,而且界拦,這類問題常常是因?yàn)榫幋a方式問題,主要原因...
    波段頂?shù)?/span>閱讀 2,870評(píng)論 1 9
  • 列車梗劫,奔馳 在回鄉(xiāng)的路上 無暇顧及 窗外誘人的風(fēng)景 一顆歸心享甸,在鳴笛聲中 迸出了更快的頻率 恍惚中,在山一隅 依稀...
    一葉微嵐閱讀 594評(píng)論 5 19
  • 秋風(fēng)伴雨涼梳侨, 惆悵夜悠長(zhǎng)蛉威。 不是春江水, 陳茶欠妙香走哺。
    Z0001閱讀 228評(píng)論 2 7
  • 突然沉靜下來的空氣,真的很不習(xí)慣晒旅。 這些天栅盲,耳旁的嘰嘰喳喳、吵吵鬧鬧雖然總讓我心煩意亂敢朱,但那算是最貼心的陪伴吧。 ...
    向暖姑娘閱讀 362評(píng)論 0 0