题目1:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。
如:9的二进制表示为1001,有2位是1
解题思路:
方法一:判断一个二进制的某一位(第n位)是否是1,可以让这位与1进行按位与运算,如果是1,则结果为2^n
def num_1():num=input("请输入\n")#input返回的是字符串,需要转换成整型才能进行按位与运算# print(int(num)&(1<<0))count=0for i in range(32):if (int(num)&(1<<i))==(1<<i):count=count+1i=i+1print("1的个数为%d" %count)num_1()
方法二:一个二进制数与该二进制数减1的数进行按位与运算,结果就是把该二进制数最末尾的1换成0,依次循环操作,一次操作就消掉一个1,每次操作都将计数器加一可以得出这个二进制中1的个数
def num_1():num = int(input("请输入\n"))t = 0while num != 0:num = num & (num-1)t = t+1print("1的个数为%d" % t)num_1()
题目2:用一条语句判断一个整数是不是2的整数次方
if (num & (num-1))==0:print("该数是2的整数次方")
题目3:将整数的奇偶位互换
例如:9的奇偶位互换了之后是6
def odd_even():num=int(input("请输入你要转换的整数\n"))ou=num&0xaaaaaaaa #与1010 1010 1010 ...进行按位与运算ji=num&0x55555555 #与0101 0101 0101 ...进行按位与运算return (ou>>1)^(ji<<1)chang=odd_even()print("转换后的数是%d" %chang)
题目4:0~1间浮点实数的二进制表示

“乘二挪整”
import mathdef turn():s=["0."]num=0.625while num>0:num=num*2if num>=1:s.append("1")num=num-1else:s.append("0")x=s[0]for i in range(len(s)-1):x=x+s[i+1]print(x)turn()
python中的浮点运算注意点:
https://blog.csdn.net/xiaozhimonica/article/details/82785625
题目5:K个K进制的数做不进位的加法运算结果为0

