二進(jìn)制 逢二進(jìn)一
自己歸零 前面進(jìn)一位
十進(jìn)制:12
二進(jìn)制:1100(逢二進(jìn)一)
八進(jìn)制:14(逢八進(jìn)一)
十六進(jìn)制 :(逢十六進(jìn)一)
表示二進(jìn)制 0b
八進(jìn)制 0
十六進(jìn)制 0x
輸出 八進(jìn)制%o 十六進(jìn)制 %x
二進(jìn)制轉(zhuǎn)十進(jìn)制
從低位數(shù)開始,用低位數(shù)乘以2的多少次冪,冪數(shù)從0開始熊咽,然后在相加
二進(jìn)制 :1001
12(0)=1
02(1)=0
02(2)=0
12 (3)= 8
1 2 4 8 16 32
二進(jìn)制轉(zhuǎn)八進(jìn)制
三個(gè)二進(jìn)制代表一個(gè)八進(jìn)制位 胚委,將三個(gè)二進(jìn)制位轉(zhuǎn)換十進(jìn)制绿聘,算出后三位的相加,之后再相連
二進(jìn)制轉(zhuǎn)十六進(jìn)制
四個(gè)二進(jìn)制位掉膘一個(gè)十六進(jìn)制,只需要將4個(gè)二進(jìn)制轉(zhuǎn)換為10進(jìn)制,之后再相連
十進(jìn)制轉(zhuǎn) 二進(jìn)制
除2取余 倒序取出
N位二進(jìn)制的取值范圍
1位: 0~1 0~2(n)-1;
2位 :0~3 0~2(2)-1;
3位:0~7 0~2(3)-1;
源碼 反碼 補(bǔ)碼
存在內(nèi)存中的是補(bǔ)碼
正數(shù)三碼合一 一樣的
負(fù)數(shù)
源碼
1000 0000 0000 0000 0000 0000 0000 1001
反碼:符號(hào)位不變厢钧,其他位去反(0變 1 1變0)
1111 1111 1111 1111 1111 1111 1111
0110
補(bǔ)碼: 反碼 +1
1111 1111 1111 1111 1111 1111 1111
0111
為什么要有原碼/補(bǔ)碼/反碼?
計(jì)算機(jī)只會(huì)做加法
1 - 1 ==1+(-1)
0000 0001原碼(反碼) 1000 0001
- 1111 1110 -1 反碼 1111 1110
1111 1111
—————————— 9
1111 1111 反碼
將計(jì)算出來(lái)的反碼轉(zhuǎn)換為原碼嬉橙,再將原碼轉(zhuǎn)換為十進(jìn)制
1000 0000 == 反碼 == -1
1 - 1 ==1+(-1)
0000 0001 (+1補(bǔ)碼)
1111 1111 (-補(bǔ)碼)
—————————
(1) 0000 0000 == 0 最前面的1 舍去
位運(yùn)算
& 按位與
|按位或
^ 按位異或
~ 取反
按位與 &
9& 5 =早直?
按二進(jìn)制運(yùn)算
規(guī)律:一假則假 1 真 0假
1001
& 0101
———
0001 == 1
規(guī)律:任何數(shù)和1相& 結(jié)果還是那個(gè)數(shù)
1001
& 1111
————
1001
按位|
規(guī)律: 一真則真
9| 5 = ?
1001
| 0101
————
1101 ==13
按位異或^
規(guī)律: 不相同位1,相同位0
9^ 5 = ?
1001
^ 0101
—————
1100 == 12
重點(diǎn):
規(guī)律:異或的結(jié)果和參與運(yùn)算的順序沒有關(guān)系
9^ 5^6 = ?
5^ 9 ^ 6 =?
規(guī)律:兩個(gè)相同的數(shù)異或 等于0
5^5 = ?
6^6 = ?
規(guī)律:任何一個(gè)數(shù)異或上0結(jié)果不變
9 ^ 0 = ?
6 ^0 = ?
規(guī)律:任何一個(gè)數(shù)異或上同一個(gè)數(shù)量?jī)纱问锌颍Y(jié)果不變
955 = ?
5^ 9^5 = ?
取反 ~
原碼 —》 反碼(取反) —》補(bǔ)碼(+1)
補(bǔ)碼 —》反碼(-1)—》源碼(取反)
正數(shù)取反+1的負(fù)數(shù)
負(fù)數(shù)取反-1的正數(shù)
左移 <<
右移 >>
規(guī)律:左移就是左移的數(shù)乘以2的移動(dòng)次冪
注意點(diǎn):
由于左移運(yùn)算霞扬,被移動(dòng)的數(shù)的最高位會(huì)被拋棄(移除),所以左移可能會(huì)改變一個(gè)數(shù)的正負(fù)性
9<<1 = ?
0000 0000 0000 0000 0000 0000 0000 1001
右移 >>
9>>1 =?
規(guī)律:右移就是右移的數(shù)除以2的移動(dòng)次冪
9 >>1 == 9/2(1) =4
9>>2 == 9/2(2) ==2
符號(hào)位不變 后面開始移動(dòng) 根據(jù)符號(hào)位 補(bǔ) 1 或零
內(nèi)存儲(chǔ)存細(xì)節(jié)
內(nèi)存儲(chǔ)存細(xì)節(jié)
只要定義變量枫振,系統(tǒng)就會(huì)開辟一塊內(nèi)存空間喻圃,內(nèi)存尋址從大到下
,越先定義的變量粪滤,內(nèi)存地址越大级及。
變量的得知就是所占的存儲(chǔ)空間最小的字節(jié)地址
注意:由于內(nèi)存尋址是從大到小,所以存儲(chǔ)書記也是從大到小的存儲(chǔ)(先儲(chǔ)存)
類型說(shuō)明符
1.說(shuō)明長(zhǎng)度的(它可以用于修改所三用的存儲(chǔ)空間的大卸钛谩)
sgort;
long;
long long;
用于說(shuō)明數(shù)據(jù)類型,一般情況下和int配合使用
輸出需要 long (%li %ld) short (%hi %hd)
2.說(shuō)明符號(hào)位(它可以修改符號(hào)位)
unsigned;
signed;
//如果給變量加上修飾符signed怕吴,代表當(dāng)前變量的取值可以是整數(shù)/負(fù)數(shù)/零
//如果給變量加上修飾符signed窍侧,就代表把二進(jìn)制的最高位作為符號(hào)位
//而且默認(rèn)情況下所有變量都是右符號(hào)的(signed)
signed int num = 0
//unsigned代表物符號(hào),無(wú)符號(hào)转绷。無(wú)符號(hào)就代表當(dāng)前的取值只能裝整數(shù)/零
//如果給變量加上修飾符unsigned伟件,就代表“不”把而精致最高最為符號(hào)位
//如果想打印無(wú)符號(hào)的變量,只能用 %u
//不同類型的說(shuō)明符可以混合使用
數(shù)組基本概念
數(shù)組完全初始化
int score[3] = {1,3,5};
數(shù)組部分初始化
int scores[3] = {3,5};
//注意:如果沒有對(duì)數(shù)組進(jìn)行初始化(完全和部分),那么不要隨便使用數(shù)組中的數(shù)據(jù),可能是一段垃圾數(shù)據(jù)(隨機(jī)值)
//注意:定義數(shù)組的時(shí)候议经,數(shù)組的元素不能使用變量斧账,如果使用變量,那么數(shù)組中是一些隨機(jī)值