进制及其转换
- 为什么要用到二进制?
数字电路非常广泛,小到逻辑门电路,大到超大规模集成电路,手机,电脑,智能设备……数字信号即可以表示数字,也可以表示非数值的信息,如文字,声音,图片,视频。如何将这些非数值类的信息 变成 二进制信号呢?这就涉及到编码制度,即将信息通过编码的方式转成二进制值,如 MP3、MP4、midi、jpg、gif 等等
-
从可行性来说,采用二进制,只有 0 和 1 两个状态,能够表示 0 和 1 两种状态的电子器件有很多,比如开关的接通和断开、晶体管的导通和截止、磁原件的正负剩磁、电位电平的高低等都可以表示 0 和 1 两个数。使用二进制,电子器件具有实现的可行性。
-
从运算的简易性来说,二进制的运算法则少,运算简单,使计算机运算器的硬件结构大大简化(十进制乘法九九口诀有 55 条公式,而二进制乘法只有四条规则)。
-
从逻辑上讲,由于二进制 0 和 1 正好和逻辑代码假和真相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然。 -摘自计算机为什么是二进制?
- 十进制是“十进”,采用的是“个/十/百/千/万…”的进位递增
- 二进制是“二进”,采用的是“1/2/4/8/16/…”的进位递增
基数和位权
在十进制系统中(基数 10),数4327.13
表示 ( 4 × 1 0 3 ) + ( 3 × 1 0 2 ) + ( 2 × 1 0 1 ) + ( 7 × 1 0 0 ) + ( 1 × 1 0 − 1 ) + ( 3 × 1 0 − 2 ) (4×10^3) + (3×10^2) + (2×10^1) + (7×10^0) + (1×10^{-1}) + (3×10^{-2}) (4×103)+(3×102)+(2×101)+(7×100)+(1×10−1)+(3×10−2) ,其中的 10 就是我们所说的基数,基数在不同数制转换中起着重要作用。我们用数字我们知道多位数有很多位,有十位、百位和千位,处在每个位上的单位1
表示的数值大小不同,十位上的数字1
代表 10 ,百位上的数字 1 代表 100,以此类推,故我们称 1 0 n 10^n 10n为位权 ,也称比重 (以 10 进制为例)
常见的进制
计算机中的任何数据都可以用一串 0 或 1 来表示,但考虑到二进制数位太长,所以我们也可以采用八进制和十六进制来表示数值数据。为了避免出现误会,在给出一个数的同时就必须指明这个数的数制,例如:(1010)2、(1010)8、(1010)10、(1010)16所代表的数值就不同。除了用下标来表示不同的数制以外,在计算机中还常用后缀字母来表示不同的数制。后缀 B 表示这个数是二进制数(Binary);后缀 Q 表示这个数是八进制数(Octal),本来八进制数的英文单词的第一个字母应当是 O,因为字符 O 与数字 0 太容易混淆,所以常使用字符 Q 作为八进制数的后缀;后缀 H 表示这个数是十六进制数(Hexadecimal);而后缀 D 表示这个数是十进制数(Decimal)。十进制数在书写时后缀 D 可以省略,其他进制在书写时后缀一般不可省略。例如:有 4 个数分别为 375D、101B、76Q、A17H,从后缀字母就可以知道它们分别是十进制数、二进制数、八进制数和十六进制数。
程序员们更喜欢采用程序设计语言的记号来表示不同进制的数,这就是前缀表示法,例如:在 C 语言中,八进制常数以前缀 0 开始,十六进制常数以前缀 0x 开始。
-
十进制
特点:有 10 个基数:0、1、2、3、4、5、6、7、8、9
写法: ( D )