1. 理解数制系统
数制系统是表示数字的方法。我们日常使用的十进制(Decimal)使用0-9共10个数字。计算机使用二进制(Binary),仅用0和1来表示所有数据。八进制(Octal)使用0-7,十六进制(Hexadecimal)使用0-9和A-F。每种数制的基数(base)不同,每一位的值按基数的幂次计算。例如,十进制的13在二进制中为1101(1×8 + 1×4 + 0×2 + 1×1),八进制中为15,十六进制中为D。在编程中理解各种数制,能够有效地处理内存管理、位运算、颜色代码等。
在二进制、八进制、十进制、十六进制之间相互转换。
数制系统是表示数字的方法。我们日常使用的十进制(Decimal)使用0-9共10个数字。计算机使用二进制(Binary),仅用0和1来表示所有数据。八进制(Octal)使用0-7,十六进制(Hexadecimal)使用0-9和A-F。每种数制的基数(base)不同,每一位的值按基数的幂次计算。例如,十进制的13在二进制中为1101(1×8 + 1×4 + 0×2 + 1×1),八进制中为15,十六进制中为D。在编程中理解各种数制,能够有效地处理内存管理、位运算、颜色代码等。
二进制是计算机的基本语言。电子电路只能区分ON(1)和OFF(0)两种状态,因此二进制最为高效。所有数据(数字、文字、图像、视频)最终都以0和1的组合存储。位(bit)是二进制的一位,字节(byte)为8位。位运算(&, |, ^, ~)以二进制为基础,对标志管理、加密、压缩至关重要。补码(2's complement)是表示负数的方法。CPU仅通过二进制加法即可完成所有算术运算。理解二进制,就能从根本上理解计算机的工作原理。
十六进制在编程中非常重要。它比二进制简洁,又便于直接转换,因此被广泛使用。一位十六进制数恰好表示4个位(二进制4位)。内存地址以十六进制显示(0x7FFF5C3A)。颜色代码也使用十六进制(#FF5733表示红255、绿87、蓝51)。Unicode字符也用十六进制表示(U+AC00为「가」)。查看字节值时十六进制也很方便(0xFF = 255)。编程语言使用0x前缀标记十六进制。在调试和底层编程中,十六进制是必不可少的工具。
八进制在现代虽然使用较少,但在某些领域仍然重要。Unix/Linux文件权限用八进制表示(在chmod 755中,7=rwx,5=r-x)。一位八进制数恰好表示3个位。早期的计算机系统(PDP-8)偏好八进制。一些遗留系统和嵌入式设备至今仍在使用。C语言使用0前缀标记八进制(077 = 63)。八进制是以3位为一组简洁表示二进制的方法。在文件权限、掩码设置等特定的系统编程中,理解八进制不可或缺。
进制转换有多种方法。从其他进制转换到十进制时,使用位值相乘的方法。例如:1011₂ = 1×8 + 0×4 + 1×2 + 1×1 = 11₁₀。从十进制转换到其他进制时,使用取余数的方法:用目标基数反复相除,并将余数倒序读取。二进制与十六进制之间的转换非常简单:将二进制每4位分为一组,各自转换为十六进制(1111 0101₂ = F5₁₆)。二进制与八进制也类似,每3位分为一组。编程语言提供内置函数(JavaScript的parseInt、toString)。使用进制转换工具可以减少错误并快速完成转换。
进制转换在实际工作中有多种应用。位掩码用于权限管理(READ=0x01, WRITE=0x02, EXECUTE=0x04)。网络编程中,以二进制计算IP地址和子网掩码。颜色处理时将RGB值转换为十六进制。加密算法在字节级运算中使用十六进制。汇编和反汇编以十六进制显示机器码。内存转储分析也以十六进制进行。哈希值(MD5, SHA)也用十六进制表示。嵌入式系统以十六进制控制硬件寄存器。理解这些应用,能让你成为更高效的开发者。