day03 負數二進位制求法

2021-08-02 20:26:52 字數 4098 閱讀 2404

字元型別名稱是char

字元型別裡包含256個不同的整數,每個

整數可以用來代表乙個字元(例如'a',

'^'等)

這些整數和字元可以互相替代

ascii碼表中列出所有整數和字元的對應關係

'a'          97

'a'          65

'0'          48

ascii碼表裡所有小寫英文本母是連續排列的,

並且'a'對應的整數最小,字母'z'對應的

整數最大

ascii碼表裡所有大寫英文本母和阿拉伯數字

字母也都符合這個規律

'd' - 'a'   等於   'd' - 'a'

'd' - 'a' 等於  '3' - '0'   等於  3 - 0

字元型別裡的所有字元被分成兩組,每組包含

128個

其中一組字元和整數之間的對應關係在所有

計算機上都一樣,它們對應的整數範圍從

0開始到127為止

另外一組字元和整數之間的對應關係在不同

計算機上可能不同,它們對應的整數

有可能從-128到-1,也可能從128到255

'\n'       換行字元

'\r'       回車字元

'\''       代表字元'

'\"'       代表字元"

'\\'       代表字元\

短整數型別名稱是short

這個型別裡包含65536個不同的整數,其中一半

是非負數,另外一半是負數。這些數字以

數字0為中心向兩邊擴充套件

長整數型別名稱是long

這個型別裡包含2的32次方個不同的整數,其中

一半是非負數,另外一半是負數。這些數字

以數字0為中心向兩邊擴充套件的。

整數型別名稱是int

在我們的計算機上整數型別和長整數型別完全

一樣以上型別統一叫做有符號型別

每個有符號型別有乙個對應的無符號型別,

無符號型別的名稱是在對應有符號型別

名稱前加unsigned(例如unsigned char,

unsigned int等)

無符號型別和它對應的有符號型別所包含的

整數個數一樣,但是不包含負數

整數相關型別所包含的數字範圍互相重疊

並且逐漸擴大

程式中不帶小數點的數字後加u表示數字的

型別是無符號整數型別

c語言程式中使用浮點型別表示帶小數點的

數字浮點型別分為單精度浮點型別和雙精度

浮點型別

雙精度浮點型別可以記錄更多小數點後面的

數字單精度浮點型別的名稱是float

雙精度浮點型別的名稱是double

程式中帶小數點的數字預設是雙精度浮點型別的

如果帶小數點的數字後加f就表示這個數字的

型別是單精度浮點型別

c語言裡允許程式設計師擴充套件新的資料型別

這些新的資料型別叫復合資料型別

復合資料型別需要先建立然後才能使用

c99規範裡引入布林型別

這個型別裡只包含0和1兩個整數,0叫做

假,1叫做真

真和假都叫做布林值

任何乙個整數都可以當作布林值使用,0當作

布林值使用的時候是假,其他整數當作

布林值使用的時候都是真

資料型別和佔位符的對應關係

char和unsigned char          %c

short                        %hd

unsigned short               %hu

long                         %ld

unsigned long                %lu

int                          %d

unsigned int                 %u

float                        %f或%g

double                       %lf或%lg

%f和%lf會保留小數點後面

多餘的0,%g和%lg不會保留

不同資料型別的乙個重要區別就是不同型別

儲存區包含的位元組個數不同

sizeof關鍵字可以用來計算乙個儲存區包含的

位元組個數

char和unsigned char        1個位元組

short和unsigned short      2個位元組

int和uunsigned int         4個位元組

long和unsigned long        4個位元組

float                      4個位元組

double                     8個位元組

sizeof小括號裡可以寫任何能當作數字使用的內容

sizeof小括號裡對任何儲存區內容的修改不會

真正生效

scanf標準函式可以把使用者在鍵盤上輸入的

數字記錄到變數的儲存區里

為了使用這個標準函式需要包含stdio.h標頭檔案

scanf函式呼叫語句裡需要使用儲存區的位址

表示儲存區

雙引號裡使用佔位符表示儲存區的型別

不要在scanf函式呼叫語句的雙引號裡寫不是

佔位符的內容

可以在一條scanf函式呼叫語句裡獲得多個數字

如果使用者輸入的格式和程式中要求的格式不同

就無法獲得數字

乙個位元組可以分成八段,每段可以用來記錄乙個

0或者1

要想把乙個數字記錄到乙個位元組裡就必須首先

把它拆分成8個0或者1

採用一組0或者1表示數字的方法叫二進位制

任何數字既可以採用二進位制方式表示也可以

採用十進位制方式表示

計算機裡只能記錄二進位制方式表示的數字

二進位制表示方式中每個數字有乙個編號,

最右邊數字的編號是0,向左依次遞增

二進位制表示方式中某個數字裡的1單獨代表

乙個數字,這個數字就是2的數字編號

次方二進位制表示方式中如果兩個相鄰數字的內容

一樣則左邊數字代表的數字是右邊數字

代表數字的2倍

用二進位制表示的非負數符合以上規則

二進位制加一的時候把數字0開始的連續多個

1都變成0,把最右邊的0變成1

二進位制表示的非負數轉換成十進位制的時候只

需要把每個數字裡的內容單獨轉換然後

再求和0000 0101 = 2的2次方 + 2的0次方

= 4 + 1

= 50010 1100 = 2的5次方 + 2的3次方 + 2的2次方

= 32 + 8 +4

= 44

十進位制表示的非負數轉換成二進位制的方法

12         *******0

6         ******0

3         *****1

1         ****1

0         ****

轉換結果是0000 1100

不斷對原始數字進行除以2保留整數部分的操作

得到一組數字,用其中每個數字除以2取餘

得到乙個數字的內容,把所有數字的內容

按照從後向前的順序書寫就得到轉換結果

負數的二進位制和十進位制之間不能直接轉換,需要

借助相反數

轉換過程分三歩

1.首先根據原始數字得到相反數

2.把第一步得到的相反數進行轉換

3.根據第二步的轉換結果再計算相反數

把二進位制表示方式中每個數字的內容變成

相反內容然後再加一就得到相反數

的二進位制

-1414

0000 1110

1111 0001 + 1 = 1111 0010  (-14的二進位制)

有符號型別數字最左邊的二進位制數字可以幫助

判斷數字的符號,這個數字叫做符號位

符號位是0表示數字是非負數,符號位是1表示

數字是負數

1100 0101

0011 1010 + 1 = 0011 1011

59-59

預習:1.八進位制和十六進製制

2.操作符

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

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

負數的二進位制

先舉個正確的例子 7的二進位制形式可以表示如下 00000000 00000000 00000000 00000111 7的二進位制形式可以表示如下 11111111 11111111 11111111 111110011 左邊為高位,右邊為低位 2 最高位為符號位,正數的符號位為0,負數的符號位為...

正負數二進位制

1 原碼 乙個正數的原碼,是按照絕對值大小轉換成的二進位制數 乙個負數的原碼,是按照絕對值大小轉換成的二進位制數,然後最高位補1。2 反碼 正數的反碼與原碼相同 負數的反碼為對該數的原碼除符號位外各位取反 原為1,取反為0 否則相反 3 補碼 正數的補碼與原碼相同 負數的補碼為對該數的原碼除符號位外...