计算机问题:①“十进制数可以精确转换为二进制数”②“任何二进制都可以用十进制来准确表示”。
1个回答
展开全部
首先需要明确的是,这两句话的意思是不同的。
“任何二进制都可以用十进制来准确表示”是在二进制数集合和十进制数集合之间建立了一个映射,每一个二进制数都存在对应的十进制形式,但是可能有的十进制数不对应任何二进制形式,或者可以说从十进制数集到二进制数集的映射是满射(值域是满的)。而“十进制数可以精确转换为二进制数”则是说从二进制数集到十进制数集的映射是满射,这就要求每一个十进制数都必须有对应的二进制形式。
②是对的,因为二进制数的实质是按权展开,小数点前从右到左第n个数位上的数字对应了2^(n-1)的权值,而小数点后从左到右第k个数位数字对应2^(-k)的权值,如二进制小数10.01对应十进制为1*2^1+0*2^0+0*2^(-1)+1*2^(-2)=2.25;而我们都知道,对于任意的k∈Z,2^k一定是有限位的十进制数,所以从二进制到十进制的转换没有任何准确度上的损失。
①是错的,因为十进制的小数部分,即对于任意k∈Z且k<0,10^k不一定能表示为有限位的二进制数,如以下循环的出现——十进制数0.4,转换为二进制小数时由于0.4*2=0.8,小数第一位取0,0.8*2=1.6,第二位取1,弃去1之后0.6*2=1.2,第三位取1,弃去1之后0.2*2=0.4,第四位取0……发现又回到了0.4,所以二进制小数将会是0.011001100110...的无限循环,这样必然出现精确度的损失,所以说不是所有的十进制数都可以精确转换为二进制数。
“任何二进制都可以用十进制来准确表示”是在二进制数集合和十进制数集合之间建立了一个映射,每一个二进制数都存在对应的十进制形式,但是可能有的十进制数不对应任何二进制形式,或者可以说从十进制数集到二进制数集的映射是满射(值域是满的)。而“十进制数可以精确转换为二进制数”则是说从二进制数集到十进制数集的映射是满射,这就要求每一个十进制数都必须有对应的二进制形式。
②是对的,因为二进制数的实质是按权展开,小数点前从右到左第n个数位上的数字对应了2^(n-1)的权值,而小数点后从左到右第k个数位数字对应2^(-k)的权值,如二进制小数10.01对应十进制为1*2^1+0*2^0+0*2^(-1)+1*2^(-2)=2.25;而我们都知道,对于任意的k∈Z,2^k一定是有限位的十进制数,所以从二进制到十进制的转换没有任何准确度上的损失。
①是错的,因为十进制的小数部分,即对于任意k∈Z且k<0,10^k不一定能表示为有限位的二进制数,如以下循环的出现——十进制数0.4,转换为二进制小数时由于0.4*2=0.8,小数第一位取0,0.8*2=1.6,第二位取1,弃去1之后0.6*2=1.2,第三位取1,弃去1之后0.2*2=0.4,第四位取0……发现又回到了0.4,所以二进制小数将会是0.011001100110...的无限循环,这样必然出现精确度的损失,所以说不是所有的十进制数都可以精确转换为二进制数。
追问
是不是可以理解为第一句话的意思是二进制是精确的,故错误;第二句话的意思是十进制是精确的,故正确?
追答
精确与否应该是相对的吧,比如六十进制的小数转换成十进制就是不精确的,例如六十进制下的0.1=0.16666666...,所以“十进制是精确的”这样的说法没有意义,而应该说“十进制对于表示二进制数是精确的”。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询