为什么有不同的进制? 有什么好处吗?
计算机采用二进制主要是为了方便硬件的实现,电流的通、断,或高压的高、低正好能够表示二进制的0和1两个数码。二进制好处分述如下:
一、可行性:若使用十进制数,则需要这样的电子器件,它必须有能表示0—9数码的10个物理状态,这在技术上是相当困难的(目前为止没有完全解决),而使用二进制数,只需0,1两个状态,技术上轻而易举,如开关的通与断,晶体管中导通与截止等,磁介质的带磁与不带磁。
二、可靠性:二进制只有两种状态,数字传输处理不易出错。
三、简易性:二进制运算法则比较简单, 数值、图形、文字等各种形式的信息,需要计算机加工处理时,首先必须按一定的法则转换成二进制数.
然而,日常生活中使用的数是十进制数,它的特征是:
(1)有10个数字:0、1、2、3、4、5、6、7、8、9.
(2)运算时逢十进一.
二进制数的特征是:
(1)有2个数字:0,1.
(2)运算时逢二进一.
八进制数的特征:
(1)有八个数字:0,1,2,3,4,5,6,7.
(2)运算时逢八进一.
十六进制数的特征:
(1)有十六个数字:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
(2)运算时逢十六进一.
在十六进制中,分别用A、B、C、D、E和F来表示十进制数的10、11、12、13、14和15.
八进制:早期的以三为倍数的计算机(如12位)经常使用8进制,但现在以2为倍数的计算机(32位,64位)就不是很好用了,所以用的也不是很多十进制:人类最熟悉的进制,高级语言都支持十进制的书写十六进制:因为2进制表示一个很小的数都很长,所以就有了十六进制,一个十六进制数可以表示的数占4位,所以十六进制数可以很好地表示二进制,他们之间的转换非常容易
进制之间的转换规则
二进制--十进制:
1011 = 1*2^3+0*2^2+1*2^1+0*2^0 = 11
十进制--二进制:
商余法,从下往上
11 2 5……1
5 2 2……1
2 2 1……0
1 2 0……1
二进制--十六进制:
二进制--十进制--十六进制
11 = 1*16^1+0*16^0 = 16
十六进制--二进制:
16=0001 0110
十六进制--十进制:
十六进制--二进制--十进制:
16 = 0001 0110 = 11
十进制--十六进制:
11 = 1*16^1+0*16^0 = 16
十进制小数--二进制:
积乘法 从上往下
1.25
0.25 2 0.5……0
0.5 2 1 ……1
二进制小数--十进制:
1.01
1*2^0+0*2^-1+1*2^-2 = 1.25
二进制小数--十六进制:
1.01 = 1*16^0+0*16^-1+1*16^-2
#include
int main()
{
int a=0xC; //十六进制数用前面加0x表示
//int a=012;//八进制前面用加0表示
int i=a;
printf("%d",i);
return 0;
}
#include
int main()
{
int a=012; //八进制前面用加0表示
int i=a;
printf("%d\n",i);
return 0;
}
0开始表示八进制,0x开始表示十六进制,C语言里没有二进制的表示方法