问答题 4.  如何把十进制数(long型)分别以二进制和十六进制形式输出
【正确答案】Python的左移N位代表乘以2的N次方,右移代表除以2的N次方。因此先将数值右移i位,得到除以2的i次方(整除)后的数值b,如10除以2的0次方,得到b=10;再取b整除2后的余数0,即二进制的最后一位,以此类推,得到10转换2进制的结果1010;二进制的位数有64位,以位数为上限,对输入的10进制数字进行循环转换操作,当循环达64次时终止,示例代码如下:
   def intToBinary(n):
   hexNum=8*8 #二进制的位数(long占8个字节)
   bit=[]
   for i in range(hexNum):
   b=n>>i
   c,d=divmod(b,2)
   bit.append(str(d))
   return "join(bit[::-1])
   def intToHex(s):
   hexs=""
   remainder=0
   while s!=0:
   remainder=s%16
   if remainder<10:
   hexs=str(remainder+int('0'))+hexs
   else:
   hexs=str(remainder-10+ord('A'))+hexs
   s=s>>4
   return chr(int(hexs))
   
   if __name__=="__main__":
   print "10的二进制输出为:"+intToBinary(long(10))
   print "10的十六进制输出为:"+intToHex(long(10))
   程序的运行结果为:
   10的二进制输出为:
   0000000000000000000000000000000000000000000000000000000000001010
   10的十六进制输出为:A
【答案解析】[考点] 如何把十进制数(long型)分别以二进制和十六进制形式输出