我之前没有在编程课中学到这一点,但现在我需要知道它.学习这些数字以及如何转换它们有什么好的资源?我几乎要像时间表一样记住这些.
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,所以只有数字0和1使用.这是二进制数转换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.