基本概念(部分 C語言)

2021-07-11 07:39:51 字數 3546 閱讀 1984

-------------------學習筆記

c語言:

基本資料型別大小/(byte)

32位系統

64位系統

char

1

1

short

2

2

int

4

8

long

4

8

float

4

4

double

8

8

各種指標型別

4

8

ps: example:

int型別  

32bit

最大值:  2^31-1 

最小值:-2^31-1 

還有一位儲存符號

00000000 00000000 00000000 00000000 

(二進位制)

紅色代表符號位

有符號符號的資料型別:

原碼:

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值.

原碼是人腦最容易理解的表示。

反碼:

正數的反碼是其本身

負數的反碼:符號位不變,其餘各個位的值取反。

[10000001]   原碼

[11111110] 反碼

正數的補碼就是其本身

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

-1             [10000001]   原碼

[11111110] 反碼

補碼 + 1 = [11111111] 補碼

c語言規定的轉換規則是由低階向高階轉換。

例如,如果乙個操作符帶有兩個型別不同的運算元時,那麼在操作之前行先將較低的型別轉換為較高的型別,然後進行運算,運算結果是較高的類。

注意:在表示式中,所有的float型別都轉換為double型以提高運算精度。

example:

a = -3;

unsigned int b = 2;

long c = a + b;

printf("%ld", c);

相加時  因為32位系統 與64位系統 long的大小不一樣  所以情況不同

unsigned int 最大可表示2^32-1

int 最大可表示2^31-1

這樣int 就會轉換為 unsigned int, 由於y<0, 即y的最高符號位是1, 轉換為unsigned int 後最高位不在是符號位。

(int)-3 = 10000000 00000000 00000000 00000011(原碼)

11111111 11111111 11111111 11111100(反碼)

11111111 11111111 11111111 11111101(補碼)

a + b =  11111111 11111111 11111111 11111101 + 00000000 00000000 00000000 00000010

= 11111111 11111111 11111111 11111111 

32位系統 long 4byte  所以a + b = -1     =   11111111 11111111 11111111 11111111 (補碼)

64位系統 long 8byte 所以 a + b= 2^32 = 4294967295

1.&   按位  與

運算:對應的兩個二進位制 均為1時 ,結構為1, 否則為0

example: 9 & 5 = 1

1001

0101

結果:0001 =  1

example: x % 8 == x & 7

2.|   按位    或

運算:對應的兩個二進位制只要有乙個為1時 ,結果為1, 否則為0

example: 9 | 5 = 13

1001

0101

結果:1101 = 13

3. ^ 按位   異或

運算:對應的兩個二進位制 不相同為 1, 否則為 0

example: 9^5 = 12

1001

0101

結果:1100 = 12

ps:相同整數 異或為 0      5^ 5 = 0

不同整數 異或 結果和順序無關  

任何數和 0 異或  結果不變  

4.~ 按位  取反

運算:對整數的 每一位取反 ,符號也要取反

example: ~9 = -10

00000000 00000000 00000000 00001001

取反111111111 111111111 111111111 111110110

求其原始資料

求其補碼

10000000 00000000 00000000 00001001 = -10

5.  <<  左移

example: x<

運算:把x的二進位制位向左移動 n個單位, 高位丟棄, 低位補0

6. >> 右移

example: x>> n = x / 2^n

運算:把x的二進位制位向右移動n個單位, 低位丟棄, 符號位不變,但是符號要跟著移動

也就是不改變正負

所謂大端就是指   高位值在記憶體中放低位位址,所謂小端是指低位值在記憶體中放低位位址。

別人家詳細的解釋

判斷機器是何種機器的小**

#include using namespace std;

union

test;

bool testbigendin()

int main()

{ if (testbigendin())

cout<<"big-endian<

C語言 基本概念

c語言的基本概念 1.格式 型別修飾符 變數名初始值.2.定義變數規則 1 不能以數字開頭.2 由下劃線,字母,美元符,數字組成.3 變數名不能重複.4 不要以拼音命名,特別是拼音簡寫.5 駝峰結構 駝峰命名法.6 不能與系統保留字重名.3.編寫 規範 操作符兩個由空格,逗號後面乙個空格.練習1 定...

C語言基本概念

bit 中文名稱是位,音譯 位元 是用以描述電腦資料量的最小單位。二進位制數系統中,每個0或 1就是乙個位 bit bit縮寫為b。位元組 byte 是計算機 資訊科技 用於計量儲存容量和傳輸容量的一種計量單位,乙個位元組等於8位 二進位制數 byte 縮寫為b 1kb 1024 bytes 102...

C 語言基本概念

類 具有同種屬性的物件稱為類,是個抽象的概念。比如說 汽車 人 狗 神 物件 日常生活中的所有東西都是物件,是類的例項化。比如說 推土車是汽車的例項化 姚明是人的例項化 小白 狗的名字 是狗的例項化 二郎神是神的例項化 屬性 用來描述具體某個物件的特徵的是屬性,是靜態的。比如 姚明身高2.6公尺多 ...