Day4 進製的轉換 運算子(位操作符)

2021-07-16 02:13:56 字數 4859 閱讀 2681

默寫:

ls 檢視指定路徑下的所有檔案及資料夾

絕對路徑指的是以根目錄為起始的路徑

pwd檢視當前路徑的絕對路徑

根目錄是指系統目錄的起始目錄

mkdir命令用來建立目錄

使用方法: mkdir 目錄路徑

這個命令要求目錄本身還不存在,但它的父目錄已經存在

這個命令可以使用-p選項,這個選項可以把路徑中所有不存在的目錄都建立出來

把二進位制所有數字從右向左每三個數字分成一組,每組用乙個0-7之間的數字替換,替換的結果叫做數字的八進位制表示方式

0110 1010     01 101 010 152(八進位制表示)

可以在程式中採用八進位制表示數字,必須以數字0開頭

可以採用%o做佔位符把數字的八進位制表示方式顯示在螢幕上

1#include

2int main()              輸出: 106   0152     前面變成十進位制 1*64+5*8+2

把二進位制所有數字從右向左每四個數字分成一組,每組用乙個字元替換。這個替換結果叫做數字的十六進製制。

1100 1011 = cb(十六進製制)

可以在程式中使用十六進製制方式表示數字,必須用0x做開頭,採用%x或%x做佔位符代表數字的十六進製制

顯示結果中不包括0x開頭

用%x做佔位符時,顯示結果中所有字元都是小寫的

用%x做佔位符時,顯示結果中所有字元都是大寫的

1#include

2int main()

輸出結果:   203 0xcb 0xcb    (12*16+11)

c語言裡採用操作符表示對數字的處理規則

根據需要配合的數字個數把操作符分成三類:單目操作符、雙目操作符、三目操作符

取餘:printf("15%%6is %d\n",15%6 );  前面兩個%號是輸出乙個%,如果乙個,系統以為不完整的佔位符

賦值操作符(=)可以把乙個數字放到乙個儲存區里

可以在一條語句裡使用多個賦值操作符,系統先計算右邊的賦值操作符,然後計算左邊的

char ch=0;

int num=0;

num=ch=300;

printf(「num是%d」,num);      結果是44,因為ch=44然後複製給num

絕大多數雙目操作符可以和賦值操作符合併形成復合賦值操作符,例如+=,*=等

復合賦值操作符要求左邊的內容可以代表儲存區,右邊的內容代表數字

它首先用雙目操作符對左右兩邊的內容做計算,然後把計算結果記錄到左邊的儲存區里。

num=50;

num*=2+3;   num=250;

復合賦值操作符的優先順序和賦值操作符的優先順序一樣低 (所以先算+再賦值)。

(++)(--)自增操作符和自減操作符,和儲存區配合使用

它們由兩種使用方法,一種是前操作符(操作符寫在儲存區前面),另一種是後操作符(操作符寫在儲存區後面)

前操作語句當作數字使用的時候是修改後的數字,後操作語句當作數字使用的時候是修改前的數字  

不要在一條語句裡對同乙個變數多次進行自增或自減計算,因為結果不確定。

num1=num++ + ++num; 

錯!!不能這樣   例:

1#include

2int main()

3 邏輯表示式的計算結果一定是布林值

邏輯操作符就是用來編寫邏輯表示式的

!是乙個單目邏輯操作符,它可以計算乙個布林值的相反值

這個操作符應該寫在乙個布林值的前面

雙目邏輯操作符包括= =(等於),不等於(!=),大於(>),小於(<),大於等於(>=)和小於等於(<=)

最多包含乙個雙目邏輯操作符的表示式在計算機裡的結果和數學裡的結果一樣

最多包含乙個雙目邏輯操作符的表示式叫做簡單邏輯表示式

所有複雜邏輯表示式必須拆分多個簡單邏輯表示式然後合併,這樣計算機運算結果與數學結果一致

與(&&)和或(||)是雙目邏輯操作符,它們用來合併多個邏輯表示式

如果兩個邏輯表示式中有乙個結果是假,用與(&&)合併後結果一定是假

如果兩個邏輯表示式中有乙個結果是真,用或(||)合併後結果一定是假

如果前面的邏輯表示式可以決定整個邏輯表示式的結果,則計算機忽略後面的邏輯表示式.

int num=0   1 | | num  printf(%d , num )    輸出是 0      後面不執行

練習:男人身高減體重小於105算超重,女人身高減體重小於110算超重

編寫程式從鍵盤得到乙個人的性別,身高和體重  把超重判斷的結果顯示在螢幕上

0代表女人,1代表男人,如果超重就顯示1,如果不超重就顯示0

思路:(超重男人)|| (超重女人)

1#include

2int main() 

位操作符直接操作二進位制數字

~是乙個單目位操作符,叫做按位求反操作符,這個操作符應該寫在乙個數字前面

1 #include

2 int main()                 

輸出結果是:

0x3c

1100 0011

雙目位操作符包括按位與(&),按位或(|)和按位異或(^)。它們可以把兩個數字對應二進位制數字上的內容進行計算

按位與(&)把對應數字上的內容做與計算,只要由乙個數字內容是0,則計算結果就是0.

3  0000 0011

&  5  0000 0101  

0000 0001     3&5=1           printf("%d",3&5);     輸出結果1

按位或(|)把對應數字上的內容做或計算,只要有乙個數字內容是1,則計算結果就是1

3 |  5    =7              printf("%d",3|5);         輸出結果7

按位異或(^)把對應數字上的內容做異或計算

如果兩個數字內容一樣,則異或計算結果是0,如果一樣,則結果是1。

3                    0000 0011

^   5      0000 0101

0000 0110      3^5 =6

使用功能:求乙個數是否是奇數還是偶數    num & 1   計算比 num%1快

移動操作可以把乙個數字中所有二進位制數字的內容統一向左或向右移動n個位置

>>表示向右移動       《表示向左移動   是雙目位操作符

操作符左邊的數字是將要進行移位操作的數字

操作符右邊的數字是將要移動的位數

移位操作相當於把每個數字的內容放到另外乙個數字,向左移動的時候右邊空出來的位置上一定填充0

無符號型別向右移位後,左邊空出來的位置上填充0

有符號型別向右移位後,左邊空出來的位置上填充符號位  

一般情況下數字向左移動n位,相當於乘以2的n次方,向右移動n位,相當於除以2的n次方

位操作符不會修改任何儲存區內容,它們只是計算出乙個新數字

&可以作為單目操作符使用,也可以用來計算乙個儲存區的位址

在計算機中所有位址資料都是32個二進位制數字(即8個16進製制)

1 #include

2 int main()          輸出為:  0xbfe88abc

*也可以當單目操作符使用,這個時候它可以根據乙個位址找到相應的儲存區,此時*應該寫在乙個位址資料前面

*(&num)=10;   將num位址的儲存區賦值10

(用&算出num的位址,用*找到位址,寫入10)

三目操作符從兩套不同的計算規則中選擇一套進行計算

布林值?公式一:公式二

如果布林值是真,就採用公式一進行計算,否則採用公式二計算

例:計算絕對值

1 #include

2 int main()

不要寫成num>=0 ? num=num : num=0-num ;  不能在問號後使用賦值操作符

作業:使用三目表示式重新實現超重練習

男人身高減體重小於105算超重,女人身高減體重小於110算超重

編寫程式從鍵盤得到乙個人的性別,身高和體重  把超重判斷的結果顯示在螢幕上

0代表女人,1代表男人,如果超重就顯示1,如果不超重就顯示0

1#include

2 intmain()

如果表示式裡多個數字不是同一型別,則計算機無法完成表示式的計算

這個時候計算機需要首先把所有數字轉換成同乙個型別,這個轉換過程由計算機完成,叫做隱式型別轉換

隱式型別轉換中一定把占用記憶體空間小的型別轉換成占用記憶體空間大的型別

sizeof ( 1 ? 1 : 0.9 )    是 8      首先轉換成雙精度

如果不同型別占用記憶體空間大小一樣,就把整數型別轉換成浮點型別,把有符號型別轉換成無符號型別

printf (「%d」,-7+3>0)      輸出結果為  0

printf (「%d」,-7+3u>0)      輸出結果為  1

printf (「%u」,-7+3u>0)      輸出結果為  1

c語言可以隨時給數字指定乙個型別,這叫做強制型別轉換

強制型別轉換格式如下:

(char)300

printf(「%d」,(char)300 );   輸出結果是44  

原因: 300是整型,強制轉換成字元型別,前面3個位元組丟失,只剩最後乙個位元組內容

強制型別轉換有可能導致資料丟失

型別轉換不會修改任何儲存區內容,計算機會用乙個新的儲存區記錄轉換後的數字。

作業:編寫程式從鍵盤得到乙個0到127之間的整數,把它轉換成二進位制,並把結果顯示在螢幕上(先顯示左邊數字,後顯示右邊數字)

1 #include

2 int main()

或16 #include

17 int main()

可以用16進製制替換128、64、32…..

128=0x80  64=0x40  ….

day4 邏輯運算子 表示式

num 1 等價於 num num 1 num 1 等價於 num num 1 num 2 等價於 num num 2 num 2 等價於 num num 2 num 2 等價於 num num 2 num 2 等價於 num num 2 num 2 等價於 num num 2 and 且,並且 只...

位操作運算子

1.按位與運算子 按位與運算子 是雙目運算子。其功能是參與運算的兩個數字對應的二進位制位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0。參與運算的數以補碼方式出現。例如,9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 00000001 1的二進...

運算子與進製轉換

字元型別 字元常量 a 乙個字元 字串常量 abcd 多個字元 字元變數 1 定義變數 有無符號 型別 變數 2 引用變數 引用變數內容 浮點型 1 浮點型常量 十進位制 3.14 科學表示3e14 2 浮點型變數 float double 有符號 型別 變數名 程式 演算法 資料 運算子 表示式 ...