6个回答
展开全部
这个函数的作用是反向输出2进制数……
具体解释一下这个Bin函数吧:
首先,判断x/2是否大于0,大于0 的时候调用Bin(x/2),其实就是把x除以2以后再次调用函数,所以这个函数每一次都会把原来的x的数字给除以2,一直到x等于1为止。这个时候函数结束。
然后,这个Bin函数输出此时x对于2的余数,当x等于偶数时余数为0,等于奇数时余数为0.
其实这个就是我们求一个数的二进制表达方式时是正好相反的顺序,我们来看一看普通情况下求一个数的二进制是怎么求的:
例如原来的数为10,则:
(1)先求这个数对2的余数,写在“个位”上。现在10对2的余数为0.,所以现在数字为“0”
(2)判断这个数是否大于1,等于1时计算完毕,大于1时除以2求商并回到(1)。10大于1,大于1时将这个数除以2并求整数(商),现在10除以2,等于5.
(3)再次回到(1),现在求5对2的余数,写在“十位”上,现在5对2的余数为1,于是,原来的数字现在为“10”。
(4)再次回到2,5除以2,求整数,等于2.
(5)再次回到(1),现在2对2的余数,写在“百位”上,为0,现在的数字为“010”
(6)再次回到(2),2除以2,等于1
(7)再次回到(1),这一次,1对2的余数,等于1,写在“千位”上,现在数字为“1010”
(8)现在回到(2) 1等于1,计算完毕,所以10的二进制数为“1010”。
而现在这个bin函数会正好将这个二进制数给反过来写,因为printf函数会一个一个的打印当前这个数对2的余数,而不会将第一次的余数放在“个位”,第二次放在“十位”,第三次放在“百位”这样,所以原来我们手工计算的结果(从右像左写),在Bin中完全会被反过来(从左向右写),不知道我这样解释你明白了没有……
具体解释一下这个Bin函数吧:
首先,判断x/2是否大于0,大于0 的时候调用Bin(x/2),其实就是把x除以2以后再次调用函数,所以这个函数每一次都会把原来的x的数字给除以2,一直到x等于1为止。这个时候函数结束。
然后,这个Bin函数输出此时x对于2的余数,当x等于偶数时余数为0,等于奇数时余数为0.
其实这个就是我们求一个数的二进制表达方式时是正好相反的顺序,我们来看一看普通情况下求一个数的二进制是怎么求的:
例如原来的数为10,则:
(1)先求这个数对2的余数,写在“个位”上。现在10对2的余数为0.,所以现在数字为“0”
(2)判断这个数是否大于1,等于1时计算完毕,大于1时除以2求商并回到(1)。10大于1,大于1时将这个数除以2并求整数(商),现在10除以2,等于5.
(3)再次回到(1),现在求5对2的余数,写在“十位”上,现在5对2的余数为1,于是,原来的数字现在为“10”。
(4)再次回到2,5除以2,求整数,等于2.
(5)再次回到(1),现在2对2的余数,写在“百位”上,为0,现在的数字为“010”
(6)再次回到(2),2除以2,等于1
(7)再次回到(1),这一次,1对2的余数,等于1,写在“千位”上,现在数字为“1010”
(8)现在回到(2) 1等于1,计算完毕,所以10的二进制数为“1010”。
而现在这个bin函数会正好将这个二进制数给反过来写,因为printf函数会一个一个的打印当前这个数对2的余数,而不会将第一次的余数放在“个位”,第二次放在“十位”,第三次放在“百位”这样,所以原来我们手工计算的结果(从右像左写),在Bin中完全会被反过来(从左向右写),不知道我这样解释你明白了没有……
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,此题的作用是十进制数12,转换为二进制数1100。你可以把12换成bin(2),进入此函数首先判断2/2=1,则迭代调用bin(1),进入bin(1)后判断1/2=0,则输出1%2=1,既输出1,返回bin(2),输出2%2=0。最后结果是10既是十进制数对应的二进制数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询