1.二进制码
只使用“0”和“1”两个基本符号,在数值数据中选用“逢二进一”的进位规则,这是二进制码的基本特点。计算机内部普遍使用二进制码来表示各种数据,这是因为:
① 很容易找到表示和区分二进制码的“0”和“1”两个符号的物理器件;
② “0”和“1”两个符号可以很好地对应逻辑型数据的“假”和“真”两个值;
③ 用二进制码表示的数值型数据的运算规则最简单。
各种不同类型的数据,包括数值、逻辑值、文本、图像、声音和视频等多种信息,在计算机系统内部都必须采用二进制代码的“0”和“1”来表示。对于数值类型的数据,在日常生活中通常使用带正、负号的十进制数来表示,如123.456、-789等,这选用的二进制数或采用二进制编码的就势必遇到和计算机内部十进制数(Binary Coded Decimal Number,简称BCD码)之间的数制转换问题。
2.数制与进位计数法
在采用进位计数的数字系统中,如果只用r个基本符号 (例如0,1,2,…r-1) 、通过排列起来的符号串表示数值,则称其为基r数制(Radix-r Number System), r称为数制的基数(Radix)。假定用m k个自左向右排列的符号Di(i是位序号,-k≤i≤m-1;Di表示符号串中第i位上的记数符号,属于0到r-1中的一个)表示数值N,则有:
N = Dm-1 Dm-2 … D1 D0 D-1 D-2 …D-k (2.1)
式中的Di(-k≤i≤m-1)为该数制采用的基本符号,可取值0、1、2、…、r-1,小数点位置隐含在 D0与D-1位之间,则Dm-1 … D0 为N的整数部分,D-1 … D-k 为N的小数部分。
如果为第i位上的符号1赋以某个固定的值Wi ,则称Wi 为第i位的权 (Weight) ,在选用“逢r进位”的规则时,位权Wi的值为ri(一个底为基数、幂是位序号的指数值),则称这种数制为r进位数制 (Positional Radix-r Number System),简称r进制。第i位的实际值可写成Di×ri,N的实际值为各数据位实际值的累加和,可表示为:
m-1
例如,表示十进制数要使用10个基本符号:0,1,2,3,4,5,6,7,8,9,采用逢10进1规则,例如103.4 = 1×102 0×101 3×100 4×10-1。
在计算机中通常还会用到二、八、十六3种进位数制。
在二进制中,计数符号:0,1,基数是2,逢二进一。
在八进制中,计数符号:0,1,…,7,基数是8,逢八进一。
在十六进制中,计数符号:0,1,…,9,A,B,…,F,基数是16,逢十六进一。分别用A-F分别表示十进制数10,11,12,13,14,15。
十进制二进制转换方法1.十→二进制数的转换
十→二进制数的转换要分为整数与小数两种情况分别转换。
(1)整数的转换:采用除2取余,高位在下,直到商为0时为止的原则。
(2)小数的转换:采用乘2取整,高位在上的原则,位数达到要求或小数部分为0结束。
例如,把十进制小数0.375转换为二进制数,如下所示:
0.375×2=0.75 整数部分为0高位
0.75×2=1.5 整数部分为1
0.5×2=1.0 整数部分为1低位
所以,0.375=(0.011)2
(十进制转化二进制)
2.二-十进制数的转换
二-十进制数的转换:通常采用公式(2.2)对二进制数各位的实际值累加求和完成。
例如:(10110)2= 1×24 0×23 1×22 1×21 0×20 =22
(1101.1)2=1×23 1×22 0×21 1×20 1×2-1=13.5
(二进制转化十进制)
3.八→二进制数的转换
因为23=8,故1个八进制位对应3个二进制位,可以把一个八进制数的整数部分和小数部分的每一位分别转换成3位二进制数。
例如: (103.4)8=(001010011.100)2
(741)8=(111100001)2
4.二→八进制数的转换
因为23=8,故3个二进制位对应1个八进制位,可以从小数点位置分别向左和向右把每3位二进制数划分为一组,并转换成1位八进制数。注意:小数部分分组时若低位不足3位时要用0补足,否则会出错。
例如: (10110110.1)2=(266.4)8,而不是 (266.1) 8
(二进制转化八进制)
5.十六→二进制数的转换
因为24=16,故1个十六进制位对应4个二进制位,可以把一个十六进制数的整数部分和小数部分的每一位分别转换成4位二进制数。
例如: (123)16=(0001,0010,0011)2
(D2C8)16=(1101,0010,1100,1000)2
6.二→十六进制数的转换
因为24=16,故4个二进制位对应1个十六进制位,可以从小数点位置分别向左和向右把每4位二进制数划分为一组,并转换成1位十六进制数。注意:小数部分分组是若低位不足4位要用0补足,否则会出错。
例如: (10110110.11)2=(1011, 0110)16=(B6.C)16,而不是 (266.3) 16
(100110111)2=(1, 0011, 0111)8=(137)16
(二进制转化十六进制)
,