【摘要】:假如现在要把十进制数7以二进制的形式来输出,由于7的二进制的表示为00000111,计算第6位二进制码是0还是1的方法是:首先把这个值左移6位得到11000000,然后再右移7位,得到00000001,移位后得到的值就是第6位二进制码的值。由此可以得出如下计算方法:假设十进制数对应的二进制数的长度为binNum,那么计算十进制数n的第i位二进制码值的公式为n<<i>>binNum-1。可以使用类似于十进制转二进制的方法。把十进制的数对16求余数。
【出自YH面试题】
难度系数:★★★★☆ 被考察系数:★★★★☆
分析与解答:
由于十进制数本质上还是以二进制的方式来存储的,在实现的时候可以把十进制数看成二进制的格式,通过移位的方式计算出每一位的值。为了方便起见,下面以byte类型的数为例介绍实现方法。假如现在要把十进制数7以二进制的形式来输出,由于7的二进制的表示为00000111,计算第6位二进制码是0还是1的方法是:首先把这个值左移6位得到11000000,然后再右移7位,得到00000001,移位后得到的值就是第6位二进制码的值。由此可以得出如下计算方法:假设十进制数对应的二进制数的长度为binNum,那么计算十进制数n的第i位二进制码值的公式为n<<i>>binNum-1。通过这种计算方法可以得到每一位的值,然后把对应的值存储在字符数组中即可。
上面介绍的方法使用的是移位操作,虽然效率比较高,但是难以理解。下面介绍一种简单的转换为十六进制的方法。可以使用类似于十进制转二进制的方法。把十进制的数对16求余数。得到的余数就是十六进制的最后一位,然后把这个十进制数除以16,用得到的数继续使用相同的方法计算其他的位数。需要注意的是对于十六进制10~15需要转换为A~F。示例代码如下所示:(www.xing528.com)
程序的运行结果如下:
10的二进制输出为:0000000000000000000000000000000000000000000000000000000000001010
10的十六进制输出为:A
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。