最全ASCII對應碼錶-鍵值

OCT(八進制)程序員

最全ASCII碼對應表—與鍵盤按鍵對應值算法

(二進)Bin    (十進)Dec   (十六進)Hex         縮寫/字符                                       解釋
0000 0000     0           00             NUL (null)                                       空字符    
0000 0001     1           01             SOH (start of handing)                   標題開始  
0000 0010     2           02             STX (start of text)                           正文開始  
0000 0011     3           03             ETX (end of text)                           正文結束
0000 0100     4           04             EOT (end of transmission)             傳輸結束  
0000 0101     5           05             ENQ (enquiry)                               請求  
0000 0110     6           06             ACK (acknowledge)                       收到通知  
0000 0111     7           07             BEL (bell)                                       響鈴
0000 1000     8           08             BS (backspace)                             退格  
0000 1001     9           09             HT (horizontal tab)                         水平製表符  
0000 1010     10         0A             LF (NL line feed, new line)             換行鍵  
0000 1011     11         0B             VT (vertical tab)                             垂直製表符  
0000 1100     12         0C             FF (NP form feed, new page)         換頁鍵  
0000 1101     13         0D             CR (carriage return)                       回車鍵
0000 1110     14         0E             SO (shift out)                                 不用切換  
0000 1111     15         0F             SI (shift in)                                     啓用切換  
0001 0000     16         10             DLE (data link escape)                   數據鏈路轉義  
0001 0001     17         11             DC1 (device control 1)                   設備控制1  
0001 0010     18         12             DC2 (device control 2)                   設備控制2  
0001 0011     19         13             DC3 (device control 3)                   設備控制3  
0001 0100     20         14             DC4 (device control 4)                   設備控制4  
0001 0101     21         15             NAK (negative acknowledge)         拒絕接收  
0001 0110     22         16             SYN (synchronous idle)                 同步空閒  
0001 0111     23         17             ETB (end of trans. block)               傳輸塊結束  
0001 1000     24         18             CAN (cancel)                                 取消
0001 1001     25         19             EM (end of medium)                       介質中斷  
0001 1010     26         1A             SUB (substitute)                             替補  
0001 1011     27         1B             ESC (escape)                                 溢出  
0001 1100     28         1C             FS (file separator)                         文件分割符  
0001 1101     29         1D             GS (group separator)                     分組符  
0001 1110     30         1E             RS (record separator)                   記錄分離符  
0001 1111     31         1F             US (unit separator)                         單元分隔符  
0010 0000     32         20             空格
0010 0001     33         21             !
0010 0010     34         22             "
0010 0011     35         23             #
0010 0100     36         24             $
0010 0101     37         25             %
0010 0110     38         26             &
0010 0111     39         27             '
0010 1000     40         28             (
0010 1001     41         29             )
0010 1010     42         2A             *
0010 1011     43         2B             +
0010 1100     44         2C             ,
0010 1101     45         2D             -
0010 1110     46         2E             .
0010 1111     47         2F             /
0011 0000     48         30             0
0011 0001     49         31             1
0011 0010     50         32             2
0011 0011     51         33             3
0011 0100     52         34             4
0011 0101     53         35             5
0011 0110     54         36             6
0011 0111     55         37             7
0011 1000     56         38             8
0011 1001     57         39             9
0011 1010     58         3A             :
0011 1011     59         3B             ;
0011 1100     60         3C             <
0011 1101     61         3D             =
0011 1110     62         3E             >
0011 1111     63         3F             ?
0100 0000     64         40             @

0100 0001     65         41             A
0100 0010     66         42             B
0100 0011     67         43             C
0100 0100     68         44             D
0100 0101     69         45             E
0100 0110     70         46             F
0100 0111     71         47             G
0100 1000     72         48             H
0100 1001     73         49             I
0100 1010     74         4A             J
0100 1011     75         4B             K
0100 1100     76         4C             L
0100 1101     77         4D             M
0100 1110     78         4E             N
0100 1111     79         4F             O
0101 0000     80         50             P
0101 0001     81         51             Q
0101 0010     82         52             R
0101 0011     83         53             S
0101 0100     84         54             T
0101 0101     85         55             U
0101 0110     86         56             V
0101 0111     87         57             W
0101 1000     88         58             X
0101 1001     89         59             Y
0101 1010     90         5A             Z
0101 1011     91         5B             [
0101 1100     92         5C             \
0101 1101     93         5D             ]
0101 1110     94         5E             ^
0101 1111     95         5F             _
0110 0000     96         60             `
0110 0001     97         61             a
0110 0010     98         62             b
0110 0011     99         63             c
0110 0100     100       64             d
0110 0101     101       65             e
0110 0110     102       66             f
0110 0111     103       67             g
0110 1000     104       68             h
0110 1001     105       69             i
0110 1010     106       6A             j
0110 1011     107       6B             k
0110 1100     108       6C             l
0110 1101     109       6D             m
0110 1110     110       6E             n
0110 1111     111       6F             o
0111 0000     112       70             p
0111 0001     113       71             q
0111 0010     114       72             r
0111 0011     115       73             s
0111 0100     116       74             t
0111 0101     117       75             u
0111 0110     118       76             v
0111 0111     119       77             w
0111 1000     120       78             x
0111 1001     121       79             y
0111 1010     122       7A             z
0111 1011     123       7B             {
0111 1100     124       7C             |
0111 1101     125       7D             }
0111 1110     126       7E             ~  
0111 1111     127       7F             DEL (delete)                                 刪除  

鍵盤經常使用ASCII(十進制表示值)

ESC           VK_ESCAPE (27)
回車鍵:        VK_RETURN (13)
TAB鍵:       VK_TAB (9)
Caps Lock鍵: VK_CAPITAL (20)
Shift鍵:         VK_SHIFT (16)
Ctrl鍵:         VK_CONTROL (17)
Alt鍵:          VK_MENU (18)
空格鍵:         VK_SPACE (/32)
退格鍵:         VK_BACK (8)
左徽標鍵: VK_LWIN (91)
右徽標鍵:    VK_LWIN (92)
鼠標右鍵快捷鍵:VK_APPS (93)
Insert鍵:        VK_INSERT (45)
Home鍵:        VK_HOME (36)
Page Up       VK_PRIOR (33)
PageDownVK_NEXT (34)
End鍵:          VK_END (35)
Delete鍵:       VK_DELETE (46)
方向鍵(←)    VK_LEFT (37)
方向鍵(↑)    VK_UP (38)
方向鍵(→)    VK_RIGHT (39)
方向鍵(↓)    VK_DOWN (40)
F1鍵:             VK_F1 (112)
F2鍵:             VK_F2 (113)
F3鍵:             VK_F3 (114)
F4鍵:             VK_F4 (115)
F5鍵:             VK_F5 (116)
F6鍵:             VK_F6 (117)
F7鍵:             VK_F7 (118)
F8鍵:             VK_F8 (119)
F9鍵:             VK_F9 (120)
F10鍵:           VK_F10 (121)
F11鍵:           VK_F11 (122)
F12鍵:          VK_F12 (123)
Num Lock鍵: VK_NUMLOCK (144)
小鍵盤0        VK_NUMPAD0 (96)
小鍵盤1         VK_NUMPAD0 (97)
小鍵盤2         VK_NUMPAD0 (98)
小鍵盤3         VK_NUMPAD0 (99)
小鍵盤4        VK_NUMPAD0 (100)
小鍵盤5        VK_NUMPAD0 (101)
小鍵盤6         VK_NUMPAD0 (102)
小鍵盤7         VK_NUMPAD0 (103)
小鍵盤8         VK_NUMPAD0 (104)
小鍵盤9        VK_NUMPAD0 (105)
小鍵盤.         VK_DECIMAL (110)
小鍵盤*         VK_MULTIPLY (106)
小鍵盤+         VK_MULTIPLY (107)
小鍵盤-         VK_SUBTRACT (109)
小鍵盤/         VK_DIVIDE (111)
Pause Break鍵: VK_PAUSE (19)
Scroll Lock鍵: VK_SCROLL (145)編程

 

 

 

Bin二進學習

Dec十進ui

Hex十六進編碼

縮寫/字符spa

解釋orm

00000000htm

0blog

00 

NUL(null)

空字符 

00000001

1

01

SOH(start of handling)

標題開始

00000010

2

02

STX (start of text)

正文開始

00000011

3

03

ETX (end of text)

正文結束

00000100

4

04

EOT (end of transm-ission)

傳輸結束

00000101

5

05

ENQ (enquiry)

請求

00000110

6

06

ACK (acknow-ledge)

收到通知

00000111

7

07

BEL (bell)

響鈴

00001000

8

08

BS (backsp-ace)

退格

00001001

09

HT (horizon-tal tab)

水平製表符

00001010

10 

0A 

LF (NL line feed, new line)

換行鍵

00001011

11 

0B 

VT (vertical tab)

垂直製表符 

00001100

12 

0C 

FF (NP form feed, new page)

換頁鍵

00001101

13

0D 

CR (carriage return) 

回車鍵

00001110

14

0E 

SO (shift out)

不用切換

00001111

15

0F 

SI (shift in)

啓用切換

00010000

16 

10

DLE (data link escape) 

數據鏈路轉義

00010001

17

11 

DC1 (device control 1) 

設備控制1

00010010

18

12 

DC2 (device control 2)

設備控制2

00010011

19 

13

DC3 (device control 3) 

設備控制3

00010100

20

14 

DC4 (device control 4)

設備控制

00010101

21

15 

NAK (negati-ve acknowl-edge) 

拒絕接收 

00010110

22

16 

SYN (synchr-onous idle) 

同步空閒

00010111

23 

17

ETB (end of trans. block)

傳輸塊結束 

00011000

24 

18

CAN (cancel) 

取消 

00011001

25 

19

EM (end of medium)

介質中斷 

00011010

26 

1A

SUB (substit-ute)

替補

00011011

27 

1B

ESC (escape) 

溢出

00011100

28 

1C

FS (file separat-or) 

文件分割符

00011101

29 

1D

GS (group separat-or) 

分組符

00011110

30 

1E 

RS (record separat-or) 

記錄分離符

00011111

31 

1F

US (unit separat-or)

單元分隔符

00100000

32 

20

 

空格 

00100001

33 

21 

!

 

00100010

34

22 

"

 

00100011

35 

23

#

 

00100100

36 

24

$

 

00100101

37 

25

%

 

00100110

38 

26

&

 

00100111

39 

27 

'

 

00101000

40 

28

(

 

00101001

41

29

)

 

00101010

42 

2A

*

 

00101011

43

2B

+

 

00101100

44 

2C 

,

 

00101101

45 

2D

-

 

00101110

46 

2E 

.

 

00101111

47 

2F

 

00110000

48 

30

0

 

00110001

49 

31

 

00110010

50 

32 

2

 

00110011

51 

33

 

00110100

52 

34 

4

 

00110101

53 

35

 

00110110

54

36

6

 

00110111

55 

37 

 

00111000

56 

38

 

00111001

57 

39 

9

 

00111010

58 

3A

 

00111011

59

3B

;

 

00111100

60 

3C

 

00111101

61

3D

=

 

00111110

62 

3E

 

00111111

63 

3F 

?

 

01000000

64 

40

 

01000001

65

41

A

 

01000010

66 

42 

 

01000011

67

43

C

 

01000100

68 

44 

 

01000101

69

45

E

 

01000110

70

46 

F

 

01000111

71

47

G

 

01001000

72 

48

 

01001001

73

49

I

 

01001010

74 

4A

 

01001011

75

4B

K

 

01001100

76 

4C 

 

01001101

77

4D

M

 

01001110

78 

4E

 

01001111

79

4F

O

 

01010000

80 

50

 

01010001

81

51

Q

 

01010010

82

52 

R

 

01010011

83

53

S

 

01010100

84 

54

 

01010101

85 

55 

U

 

01010110

86 

56

 

01010111

87 

57

W

 

01011000

88 

58

 

01011001

89

59 

Y

 

01011010

90 

5A

 

01011011

91 

5B

 

01011100

92

5C

\

 

01011101

93 

5D

 

01011110

94

5E 

^

 

01011111

95 

5F

_

 

01100000

96 

60

 

01100001

97

61 

a

 

01100010

98 

62

 

01100011

99 

63

 

01100100

100

64

d

 

01100101

101 

65

 

01100110

102 

66

f

 

01100111

103 

67

 

01101000

104 

68 

h

 

01101001

105 

69

 

01101010

106

6A

j

 

01101011

107 

6B

 

01101100

108 

6C 

l

 

01101101

109 

6D 

m

 

01101110

110

6E

n

 

01101111

111 

6F

 

01110000

112 

70 

p

 

01110001

113 

71

 

01110010

114 

72 

r

 

01110011

115 

73

 

01110100

116 

74 

t

 

01110101

117 

75 

u

 

01110110

118 

76

v

 

01110111

119 

77

 

01111000

120 

78

x

 

01111001

121 

79

 

01111010

122 

7A 

z

 

01111011

123 

7B

{

 

01111100

124 

7C

|

 

01111101

125 

7D

}

 

01111110

126 

7E 

~

 

01111111

127 

7F 

DEL (delete)

刪除

 

 

 

 

  常見ASCII碼的大小規則:0~9A~Za~z

  1)數字比字母要小。如 「7」「F」

  2)數字0比數字9要小,並按09順序遞增。如 「3」「8」

  3)字母A比字母Z要小,並按AZ順序遞增。如「A」「Z」

  4)同個字母的大寫字母比小寫字母要小32。如「A」「a」

  記住幾個常見字母的ASCII碼大小: 「A」65「a」97「0」48

另外還有128-255ASCII字符

 

字符集簡史

  6000年前 象形文字

  3000年前 字母表

  1838年到1854Samuel F. B. Morse發明了電報,字母表中的每一個字符對應於一系列短的和長的脈衝

  1821年到1824Louis Braille發明盲文,6位代碼,它把字符、經常使用字母組合、經常使用單字和標點進行編碼。

  一個特殊的escape代碼表示後續的字符代碼應解釋爲大寫。一個特殊的shift代碼容許後續代碼被解釋爲數字。

  1931CCITT標準化Telex代碼,包括Baudot #2的代碼,都是包括字符和數字的5位代碼。

  1890年 早期計算機的字符碼是從Hollerith卡片,6位字符碼系統BCDICBinary-Coded Decimal Interchange Code:二進制編碼十進制交換編碼)

  60年代 擴展爲8EBCDIC,IBM大型主機的標準

  1967美國信息交換標準碼ASCIIAmerican Standard Code for Information Interchange

  在字符長度是6位、7位仍是8位的問題上產生了很大的爭議。從可靠性的觀點來看不該使用替換字符,

  所以ASCII不能是6位編碼,但因爲費用的緣由也排除了8位版本的方案(當時每位的儲存空間成本仍很昂貴)。

  這樣,最終的字符碼就有26個小寫字母、26個大寫字母、10個數字、32個符號、33個句柄和一個空格,總共128個字符碼。

  ASCII如今記錄在ANSI X3.4-1986字符集-用於信息交換的7位美國國家標準碼(7-Bit ASCII7-Bit American National

  Standard Code for Information Interchange),由美國國家標準協會(American National Standards Institute)發佈。

  圖2-1中所示的ASCII字符碼與ANSI文件中的格式類似。

 

ASCII國際問題

  ASCII是美國標準,因此它不能良好知足其它講英語國家的須要。例如英國的英鎊符號(£)在哪裏?

  拉丁語字母表重音符號

  使用斯拉夫字母表的希臘語、希伯來語、阿拉伯語和俄語。

  漢字系統的中國象形漢字,日本和朝鮮。

  1967年,國際標準化組織(ISOInternational Standards Organization)推薦一個ASCII的變種,

  代碼0x400x5B0x5C0x5D0x7B0x7C0x7D「爲國家使用保留,而代碼0x5E0x600x7E標爲

  當國內要求的特殊字符須要8910個空間位置時,可用於其它圖形符號。這顯然不是一個最佳的國際解決方案,

  由於這並不能保證一致性。但這卻顯示了人們如何想盡辦法爲不一樣的語言來編碼的。

 

擴展ASCII

  1981IBM PC ROM256個字符的字符集,即IBM擴展字符集

  198511 Windows字符集被稱做「ANSI字符集,遵循了ANSI草案和ISO標準(ANSI/ISO 8859-1-1987,簡「Latin 1」

  ANSI字符集的最第一版本:

  19874月代碼頁437,字符的映像代碼,出如今MS-DOS 3.3

 

雙字節字符集

  雙字節字符集(DBCSdouble-byte character set,解決中國、日本和韓國的象形文字符和ASCII的某種兼容性。

  DBCS256代碼開始,就像ASCII同樣。與任何行爲良好的代碼頁同樣,最初的128個代碼是ASCII

  然而,較高的128個代碼中的某些老是跟隨着第二個字節。

  這兩個字節一塊兒(稱做首字節和跟隨字節)定義一個字符,一般是一個複雜的象形文字。

 

鍵盤經常使用ASCII

  ESCVK_ESCAPE (27)

  回車鍵: VK_RETURN (13)

  TAB鍵: VK_TAB (9)

  Caps Lock鍵: VK_CAPITAL (20)

  Shift鍵: VK_SHIFT (16)

  Ctrl鍵: VK_CONTROL (17)

  Alt鍵: VK_MENU (18)

  空格鍵: VK_SPACE (32)

  退格鍵: VK_BACK (8)

  左徽標鍵: VK_LWIN (91)

  右徽標鍵: VK_LWIN (92)

  鼠標右鍵快捷鍵:VK_APPS (93)

  Insert鍵: VK_INSERT (45)

  Home鍵: VK_HOME (36)

  Page UpVK_PRIOR (33)

  PageDownVK_NEXT (34)

  End鍵: VK_END (35)

  Delete鍵: VK_DELETE (46)

  方向鍵(←)VK_LEFT (37)

  方向鍵(↑)VK_UP (38)

  方向鍵(→)VK_RIGHT (39)

  方向鍵(↓)VK_DOWN (40)

  F1鍵: VK_F1 (112)

  F2鍵: VK_F2 (113)

  F3鍵: VK_F3 (114)

  F4鍵: VK_F4 (115)

  F5鍵: VK_F5 (116)

  F6鍵: VK_F6 (117)

  F7鍵: VK_F7 (118)

  F8鍵: VK_F8 (119)

  F9鍵: VK_F9 (120)

  F10鍵: VK_F10 (121)

  F11鍵: VK_F11 (122)

  F12鍵: VK_F12 (123)

  Num Lock鍵: VK_NUMLOCK (144)

  小鍵盤0VK_NUMPAD0 (48)

  小鍵盤1VK_NUMPAD0 (49)

  小鍵盤2VK_NUMPAD0 (50)

  小鍵盤3VK_NUMPAD0 (51)

  小鍵盤4VK_NUMPAD0 (52)

  小鍵盤5VK_NUMPAD0 (53)

  小鍵盤6VK_NUMPAD0 (54)

  小鍵盤7VK_NUMPAD0 (55)

  小鍵盤8VK_NUMPAD0 (56)

  小鍵盤9VK_NUMPAD0 (57)

  小鍵盤.VK_DECIMAL (46)

  小鍵盤*VK_MULTIPLY (42)

  小鍵盤+VK_ADD (43)

  小鍵盤-VK_SUBTRACT (45)

  小鍵盤/VK_DIVIDE (47)

  Pause Break鍵: VK_PAUSE (19)

  Scroll Lock鍵: VK_SCROLL (145)

 

ASCII碼的算法:

  Aascii中定義爲01000001,也就是十進制65,有了這個標準後,當咱們輸入A時,計算機就能夠經過ascii碼知道輸入的字符的二進制編碼是01000001。而沒有這樣的標準,咱們就必須本身想辦法告訴計算機咱們輸入了一個A;沒有這樣的標準,咱們在別的機器上就須要從新編碼以告訴計算機咱們要輸入Aascii碼指的不是十進制,是二進制。只是用十進制表示習慣一點罷了,好比在ascii碼中,A的二進制編碼爲01000001,若是用十進制表示是65,用十六進制表示就是41H

  在ascii碼錶中,只包括了一些字符、數字、標點符號的信息表示,這主要是由於計算機是美國發明的,在英文下面,咱們使用ascii表示就足夠了!可是在漢字輸入下面,用ascii碼就不能表示了,而漢字只是中國的通用表示,因此若是咱們要在計算機中輸入漢字,就必須有一個像ascii碼的標準來表示每個漢字,這就是中國的漢字國標碼,它定義了漢字在計算機中的一個表示標準。經過這個標準,但咱們輸入漢字的時候,咱們的輸入碼就轉換爲區位碼,經過惟一的區位碼獲得這個漢字的字形碼並顯示出來。固然漢字的區位碼在計算機中也是用二進制表示的!

  二進制數轉換爲十進制數

  二進制數第0位的權值是20次方,第1位的權值是21次方……

  因此,設有一個二進制數:0110 0100,轉換爲10進製爲:

  下面是豎式:

  0110 0100 換算成 十進制

  第00 * 2^0 = 0

  第10 * 2^1 = 0

  第21 * 2^2 = 4

  第30 * 2^3 = 0

  第40 * 2^4 = 0

  第51 * 2^5 = 32

  第61 * 2^6 = 64

  第70 * 2^7 = 0

  ---------------------------

  100

  用橫式計算爲:

  0 * 2^0 + 0 * 2^1 + 1 * 2^2 +0*2^3+ 0 * 2^4 + 1 * 2^5 + 1 * 2^6 + 0 * 2^7 = 100

  0乘以多少都是0,因此咱們也能夠直接跳過值爲0的位:

  1 * 2^2 + 1 * 2^5 + 1 * 2^6 = 100

  6.2.2 八進制數轉換爲十進制數

  八進制就是逢81

  八進制數採用 07這八數來表達一個數。

  八進制數第0位的權值爲80次方,第1位權值爲81次方,第2位權值爲82次方……

  因此,設有一個八進制數:1507,轉換爲十進制爲:

  用豎式表示:

  1507換算成十進制。

  第07 * 8^0 = 7

  第10 * 8^1 = 0

  第25 * 8^2 = 320

  第31 * 8^3 = 512

  --------------------------

  839

  一樣,咱們也能夠用橫式直接計算:

  7 * 8^0 + 0 * 8^1 + 5 * 8^2 + 1 * 8^3 = 839

  結果是,八進制數 1507 轉換成十進制數爲 839

  6.2.3 八進制數的表達方法

  C,C++語言中,如何表達一個八進制數呢?若是這個數是 876,咱們能夠判定它不是八進制數,由於八進制數中不可能出7以上的阿拉伯數字。但若是這個數是123、是567,或12345670,那麼它是八進制數仍是10進制數,都有可能。

  因此,C,C++規定,一個數若是要指明它採用八進制,必須在它前面加上一個0,如:123是十進制,但0123則表示採用八進制。這就是八進制數在CC++中的表達方法。

  因爲CC++都沒有提供二進制數的表達方法,因此,這裏所學的八進制是咱們學習的,CtC++語言的數值表達的第二種進製法。

  如今,對於一樣一個數,好比是100,咱們在代碼中能夠用日常的10進製表達,例如在變量初始化時:

  int a = 100;

  咱們也能夠這樣寫:

  int a = 0144; //0144是八進制的100;一個10進制數如何轉成8進制,咱們後面會學到。

  千萬記住,用八進制表達時,你不能少了最前的那個0。不然計算機會統統當成10進制。不過,有一個地方使用八進制數時,卻不能使用加0,那就是咱們前面學的用於表達字符的轉義符表達法。

  6.2.4 八進制數在轉義符中的使用

  咱們學過用一個轉義符'\'加上一個特殊字母來表示某個字符的方法,如:'\n'表示換行(line),而'\t'表示Tab字符,'\''則表示單引號。今天咱們又學習了一種使用轉義符的方法:轉義符'\'後面接一個八進制數,用於表示ASCII碼等於該值的字符。

  好比,查一下第5章中的ASCII碼錶,咱們找到問號字符(?)ASCII值是63,那麼咱們能夠把它轉換爲八進值:77,而後用 '\77'來表示'?'。因爲是八進制,因此本應寫成 '\077',但由於C,C++規定不容許使用斜槓加10進制數來表示字符,因此這裏的0能夠不寫。

  事實上咱們不多在實際編程中非要用轉義符加八進制數來表示一個字符,因此,6.2.4小節的內容,你們僅僅瞭解就行。

  6.2.5 十六進制數轉換成十進制數

  2進制,用兩個阿拉伯數字:01

  8進制,用八個阿拉伯數字:01234567

  10進制,用十個阿拉伯數字:09

  16進制,用十六個阿拉伯數字……等等,阿拉伯人或說是印度人,只發明瞭10個數字啊?

  16進制就是逢161,但咱們只有0~9這十個數字,因此咱們用ABCDEF這五個字母來分別表示101112131415。字母不區分大小寫。

  十六進制數的第0位的權值爲160次方,第1位的權值爲161次方,第2位的權值爲162次方……

  因此,在第NN0開始)位上,若是是是數 X X 大於等於0,而且X小於等於 15,即:F)表示的大小爲 X * 16N次方。

  假設有一個十六進數 2AF5, 那麼如何換算成10進制呢?

  用豎式計算:

  2AF5換算成10進制:

  第0位: 5 * 16^0 = 5

  第1位: F * 16^1 = 240

  第2位: A * 16^2 = 2560

  第3位: 2 * 16^3 = 8192

  ---------------------------------

  10997

  直接計算就是:

  5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997

  (別忘了,在上面的計算中,A表示10,而F表示15)

  如今能夠看出,全部進制換算成10進制,關鍵在於各自的權值不一樣。

  假設有人問你,十進數 1234 爲何是 一千二百三十四?你盡能夠給他這麼一個算式:

  1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0

  6.2.6 十六進制數的表達方法

  若是不使用特殊的書寫形式,16進制數也會和10進制相混。隨便一個數:9876,就看不出它是16進制或10進制。

  CC++規定,16進制數必須以 0x開頭。好比 0x1表示一個16進制數。而1則表示一個十進制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不區分大小寫。(注意:0x中的0是數字0,而不是字母O)

  如下是一些用法示例:

  int a = 0x100F;

  int b = 0x70 + a;

  至此,咱們學完了全部進制:10進制,8進制,16進制數的表達方式。最後一點很重要,C/C++中,10進制數有正負之分,好比12表示正12,而-12表示負12,;但8進制和16進制只能用達無符號的正整數,若是你在代碼中裏:-078,或者寫:-0xF2,C,C++並不把它當成一個負數。

  6.2.7 十六進制數在轉義符中的使用

  轉義符也能夠接一個16進制數來表示一個字符。如在6.2.4小節中說的 '?' 字符,能夠有如下表達方式:

  '?' //直接輸入字符

  '\77' //用八進制,此時能夠省略開頭的0

  '\0x3F' //用十六進制

  一樣,這一小節只用於瞭解。除了空字符用八進制數 '\0' 表示之外,咱們不多用後兩種方法表示一個字符。

  6.3 十進制數轉換到2、8、十六進制數

  6.3.1 10進制數轉換爲2進制數

  給你一個十進制,好比:6,若是將它轉換成二進制數呢?

  10進制數轉換成二進制數,這是一個連續除2的過程:

  把要轉換的數,除以2,獲得商和餘數,

  將商繼續除以2,直到商爲0。最後將全部餘數倒序排列,獲得數就是轉換結果。

  聽起來有些糊塗?咱們結合例子來講明。好比要轉換6爲二進制數。

  把要轉換的數,除以2,獲得商和餘數

  那麼:

  要轉換的數是66 ÷ 2,獲得商是3,餘數是0。 (不要告訴我你不會計算6÷3!)

  將商繼續除以2,直到商爲0……」

  如今商是3,還不是0,因此繼續除以2

  那就: 3 ÷ 2, 獲得商是1,餘數是1

  將商繼續除以2,直到商爲0……」

  如今商是1,還不是0,因此繼續除以2

  那就: 1 ÷ 2, 獲得商是0,餘數是1 (拿筆紙算一下,1÷2是否是商01!

  將商繼續除以2,直到商爲0……最後將全部餘數倒序排列

  好極!如今商已是0

  咱們三次計算依次獲得餘數分別是:011,將全部餘數倒序排列,那就是:110了!

  6轉換成二進制,結果是110

  把上面的一段改爲用表格來表示,則爲:

  被除數 計算過程 餘數

  6 6/2 3 0

  3 3/2 1 1

  1 1/2 0 1

  (在計算機中,÷/ 來表示)

  若是是在考試時,咱們要畫這樣表仍是有點費時間,所更常見的換算過程是使用下圖的連除:

  (圖:1

  請你們對照圖,表,及文字說明,而且自已拿筆計算一遍如何將6轉換爲二進制數。

  說了半天,咱們的轉換結果對嗎?二進制數1106嗎?你已經學會如何將二進制數轉換成10進制數了,因此請如今就計算一下110換成10進制是否就是6

  6.3.2 10進制數轉換爲816進制數

  很是開心,10進制數轉換成8進制的方法,和轉換爲2進制的方法相似,唯一變化:除數由2變成8

  來看一個例子,如何將十進制數120轉換成八進制數。

  用表格表示:

  被除數 計算過程 餘數

  120 120/8 15 0

  15 15/8 1 7

  1 1/8 0 1

  120轉換爲8進制,結果爲:170

  很是很是開心,10進制數轉換成16進制的方法,和轉換爲2進制的方法相似,唯一變化:除數由2變成16

  一樣是120,轉換成16進制則爲:

  被除數 計算過程 餘數

  120 120/16 7 8

  7 7/16 0 7

  120轉換爲16進制,結果爲:78

  請拿筆紙,採用(圖:1)的形式,演算上面兩個表的過程。

  6.4 2、十六進制數互相轉換

  二進制和十六進制的互相轉換比較重要。不過這兩者的轉換卻不用計算,每一個CC++程序員都能作到看見二進制數,直接就能轉換爲十六進制數,反之亦然。

  咱們也同樣,只要學完這一小節,就能作到。

  首先咱們來看一個二進制數:1111,它是多少呢?

  你可能還要這樣計算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15

  然而,因爲11114位,因此咱們必須直接記住它每一位的權值,而且是從高位往低位記,:8421。即,最高位的權值爲23 8,而後依次是 22 421220 1

  記住8421,對於任意一個4位的二進制數,咱們均可以很快算出它對應的10進制值。

  下面列出四位二進制數 xxxx 全部可能的值(中間略過部分)

  僅4位的2進制數 快速計算方法 十進制值 十六進值

  1111 = 8 + 4 + 2 + 1 = 15 F

  1110 = 8 + 4 + 2 + 0 = 14 E

  1101 = 8 + 4 + 0 + 1 = 13 D

  1100 = 8 + 4 + 0 + 0 = 12 C

  1011 = 8 + 4 + 0 + 1 = 11 B

  1010 = 8 + 0 + 2 + 0 = 10 A

  1001 = 8 + 0 + 0 + 1 = 10 9

  ....

  0001 = 0 + 0 + 0 + 1 = 1 1

  0000 = 0 + 0 + 0 + 0 = 0 0

  二進制數要轉換爲十六進制,就是以4位一段,分別轉換爲十六進制。

  如(上行爲二制數,下面爲對應的十六進制)

  1111 1101 1010 0101 1001 1011

  F D A 5 9 B

  反過來,當咱們看到 FD時,如何迅速將它轉換爲二進制數呢?

  先轉換F

  看到F,咱們需知道它是15(可能你還不熟悉AF這五個數),而後15如何用8421湊呢?應該是8 + 4 + 2 + 1,因此四位全爲1 1111

  接着轉換 D

  看到D,知道它是1313如何用8421湊呢?應該是:8 + 4 + 1,即:1101

  因此,FD轉換爲二進制數,爲: 1111 1101

  因爲十六進制轉換成二進制至關直接,因此,咱們須要將一個十進制數轉換成2進制數時,也能夠先轉換成16進制,而後再轉換成2進制。

  好比,十進制數 1234轉換成二制數,若是要一直除以2,直接獲得2進制數,須要計算較屢次數。因此咱們能夠先除以16,獲得16進制數:

  被除數 計算過程 餘數

  1234 1234/16 77 2

  77 77/16 4 13 (D)

  4 4/16 0 4

  結果16進製爲: 0x4D2

  而後咱們可直接寫出0x4D2的二進制形式: 0100 1101 0010

  其中對映關係爲:

  0100 -- 4

  1101 -- D

  0010 -- 2

  一樣,若是一個二進制數很長,咱們須要將它轉換成10進制數時,除了前面學過的方法是,咱們還能夠先將這個二進制轉換成16進制,而後再轉換爲10進制。

  下面舉例一個int類型的二進制數:

  01101101 11100101 10101111 00011011

  咱們按四位一組轉換爲16進制: 6D E5 AF 1B

相關文章
相關標籤/搜索