常见数值类型及表示方法
时间:2018-06-06
日常生活中我们经常使用的数是十进制的,如我们拿的3000元工资,市场1.5 元/斤的菜价等.之所以称其为十进制,是因为这类数是逢十进一的。除了十进制计数以外,还有许多其他进制的计数方法。在计算机中常见的还有二进制、八进制、十六进制等制式。这三种进制的数在进行加法运算中分别是逢二、八、十六 进一。
其实数制类型远不止这么几种,如我们以60分钟为1小时,60秒为一分钟,用 的就是六十进制计数法;一天之中有24小时,用的是二十四进制计数法;而一星期,用的是七进制计数法。
虽然数制类型可以有很多种,但在计算机通信中通常遇到的仍是以上提到的 二进制、八进制、十进制和十六进制这四种。在一种数制中所能使用的数码的个数称为该数制的“基数' 也就是对应数制类型的名称,如二进制的基数为“2”,八进制的基数为“8”,十进制的基数为“10”,十六进制的基数也就是“16”。这里所说 的“基数”其实就是前面所说的进位计算规则,如我们常见的十进制数是逢十进 一,二进制数是逢二进一,……
既然有不同的数制,那么在计算机程序中给出一个数时就必须指明它属于哪—种数制,否则计算机程序就不知道该把它看成哪种数了,如12300这个数,既可 能是十进制、又可能是八进制或者十六进制,所以“数”需要有专门的标志来进行 区别。下面分别予以介绍。
(1) 十进制(Decimal)
十进制是日常生活中常用的数制类型,基数是10,也就是它有10个数字符 号,即0、1、2、3、4、5、6、7、8、9。其中最大数码是“基数”减1,即10-1=9, 最小数码是0。十进制数的标志为D,如(1250) D,也可用下标“10”来表示,如 (1250) 10 (注意是下标)。
(2) 二进制(Binary)
二进制是计算机运算时所釆用的数制,基数是2,也就是说它只有两个数字符 号,即0和1。如果在给定的数中,除0和1外还有其他数(例如1061),那它就绝 不会是一个二进制数了 。二进制数的最大数码也是基数减1,即2-1=1,最小数码 也是0。二进制数的标志为B,如(1001010) B,也可用下标“2”来表示,如 (1001010) 2 (注意是下标)。
(3) 八进制(Octal)
八进制的基数是8,也就是说它有8个数字符号,即0、1、2、3、4、5、6、7。对比十进制可以看出,对比十进制少了两个数“8”和“9”,这样当一个数中出 现“8”和(或)“9”时(如23459),那它也就绝不是八进制数了。八进制数的最大 数码也是基数减1,即8-:l=7,最小数码也是0。八进制数的标志为0或Q (注意它 特别一些,可以有两种标志),如(4603) O(注意是字母〇,不是数字0)、 (4603) Q,也可用下标“8”来表示,如(4603) 8 (注意是下标)。在C、C++这类语言中规定,一个数如果要指明它釆用八进制,必须在它前面加上一个0,如:123是十进制数,但0123则表示釆用的是八进制。
(4) 十六进制(Hexadecilmal)
十六进制数用得比较少,最新的IPv6地址就是釆用16进制来表示的(IPv4地 址通常釆用十进制表示)。在注册表中也会用到16进制,所以了解十六进制还是非常重要的。
十六进制的基数是16,,也就是说它有16个数字符号,除了十进制中的10个数 外,还使用了6个英文字母,这16个数字和字母依次是0、1、2、3、4、5、6、7、 8、9、A、B、C、D、E、F (与大小写无关)。其中A至F分别代表十进制数的10 至15。如果数据中出现了字母之类的符号,如63AB,则一定不会是八进制或十进 制,而是十六进制了。它的最大的数码也是“基数”减1,即16-1=15 (为F),最小 数码也是0。十六进制数的标志为H,如(4603) H,也可用下标“16”来表示,如 (4603) 16 (注意是下标)。十六进制数也常常用前缀ox表示(注意是数字 0,而不是字母0) 。在C、C++这类编程语言中也规定,16进制数必须以ox开 头。比如0X10表示一个十六进制数,而不是八进制或者十进制的10。
经验之谈既然在计算机中使用的是二进制,那为什么还要十进制、八进制和十六进制 呢?其实这都不是计算机自身要求的,因为在计算机运算中使用的全都是二进制。之所以还 需要这些数制,完全出于表达和识别的方便性考虑。因为大多数的数据用二进制表示太长了,如一个C、C++等编程语言中的int (整数)类型的数据要占用4个字节,也就是32位。比 如100,用int类型的二进制数表达将是:0000 0000 0000 0000 0110 0100。这还是一个比 较小的数,如果数更大,则会更复杂。试想一下,要写这么长,估计没几个人会喜欢,于是 就有了可以更简便表示的十进制、八进制和十六进制了。所以,像C、C++这类语言没有提供 在代码中直接写二进制数的方法,而是普遍釆用八进制或十六进制。
那为什么不是其他进制类型,如九或二十进制呢?原因就在于2、8、16,分别是2的1次 方、3次方、4次方,这就使得这三种进制之间可以非常直接地互相转换。八进制或十六进制 缩短了二进制数,但保持了二进制数的表达特点。