救命!我不知道二进制,十六进制,八进制和逐位

Str*_*rry 4 binary hex octal

我之前没有在编程课中学到这一点,但现在我需要知道它.学习这些数字以及如何转换它们有什么好的资源?我几乎要像时间表一样记住这些.

miz*_*izo 16

在我们的日常十进制系统中,基数基数10.数字系统的基数告诉我们正在使用多少个不同的数字.在十进制系统中,我们使用的数字0通过9.

数字的重要性在于radix ^ i,i数字的位置从右开始计数,从零开始.

十进制6789分解:

 6  7  8  9              radix ^ i
 |  |  |  |             --------------
 |  |  |  +-- ones       10 ^ 0 = 1
 |  |  +----- tens       10 ^ 1 = 10
 |  +-------- hundreds   10 ^ 2 = 100
 +----------- thousands  10 ^ 3 = 1000

  ones      tens       hundreds    thousands
  -----------------------------------------------
  (9 * 1) + (8 * 10) + (7 * 100) + (6 * 1000)
= 9       + 80       + 700       + 6000
= 6789
Run Code Online (Sandbox Code Playgroud)

该方案将帮助我们理解任何数字系统的十进制数.


十六进制系统的基数是16,所以我们需要使用额外的数字A...F来表示10...15.让我们CDEFh以类似的方式分解十六进制数:

 C  D  E  F              radix ^ i
 |  |  |  |             --------------
 |  |  |  +-- ones       16 ^ 0 = 1
 |  |  +----- sixteens   16 ^ 1 = 16
 |  +-------- 256:s      16 ^ 2 = 256
 +----------- 4096:s     16 ^ 3 = 4096

  ones       sixteens    256:s        4096:s
  -----------------------------------------------
  (Fh * 1) + (Eh * 16) + (Dh * 256) + (Ch * 4096)
= (15 * 1) + (14 * 16) + (13 * 256) + (12 * 4096)
= 15       + 224       + 3328       + 49152
= 52719
Run Code Online (Sandbox Code Playgroud)

我们刚刚将数字转换CDEFh为十进制(即16从基数切换到基数10).


二元体系中,基数2,所以只有数字01使用.这是二进制数转换1010b为十进制:

 1  0  1  0              radix ^ i
 |  |  |  |             --------------
 |  |  |  +-- ones       2 ^ 0 = 1
 |  |  +----- twos       2 ^ 1 = 2
 |  +-------- fours      2 ^ 2 = 4
 +----------- eights     2 ^ 3 = 8

  ones      twos      fours     eights
  -----------------------------------------------
  (0 * 1) + (1 * 2) + (0 * 4) + (1 * 8)
= 0       + 2       + 0       + 8
= 10
Run Code Online (Sandbox Code Playgroud)

八进制系统 - 同样的事情,基数是8,数字0...7正在使用中.将八进制转换04567为十进制:

 4  5  6  7              radix ^ i
 |  |  |  |             --------------
 |  |  |  +-- ones       8 ^ 0 = 1
 |  |  +----- eights     8 ^ 1 = 8
 |  +-------- 64:s       8 ^ 2 = 64
 +----------- 512:s      8 ^ 3 = 512

  ones      eights    64:s       512:s
  -----------------------------------------------
  (7 * 1) + (6 * 8) + (5 * 64) + (4 * 512)
= 7       + 48      + 320      + 2048
= 2423
Run Code Online (Sandbox Code Playgroud)

因此,在数字系统之间进行转换就是简单地改变基数.

要了解按位运算符,请参阅http://www.eskimo.com/~scs/cclass/int/sx4ab.html.