Ⅰ 如何用python將十進制數字轉為二進制,以及將二進制轉為十六進制
1、將十進制轉換成二進制,利用bin()方法。
Ⅱ 如何用python判斷某個二進制位數是否為偶數
下面是三種方式:
①通過模2除2(%2、/2)的方法
num%2——取出二進制的最後一位
num/2——右移去掉二進制的最後一位
通過while循環,依次取出二進制的最後一位數字判斷是否為1,若為1則count++,while(num)只有當num變為0時循環結束。
問題:在測試-1出現bug,-1的二進制中應該有32個1,輸出卻為0。我們將-1帶入代碼中發現-1%2=0,count不增,然後-1/2=0,循環結束,故輸出count的值為0。
解決方案:將變數num的數據類型改為unsigned int (無符號整型),此時表示的是正的整型的最大值,所以當num=-1時,表示二進制為32個1的正數,通過循環可以輸出正確的個數。
②通過右移操作符(>>)、按位與操作符(&)實現
Example:當num=10(1010),通過右移操作num>>i,二進制向右移動i位。
//i=0,num>>0,右移0位,此時(1010)&(0001)=0
//i=1,num>>1,右移1位,此時(0101)&(0001)=1,count++
//i=2,num>>2,右移2位,此時(0010)&(0001)=0
//i=3,num>>3,右移3位,此時(0001)&(0001)=1,count++
……
因為二進制共32位,所以循環要執行32次後結束,得到count為2。
缺點:不夠高效,必須循環32次。
③通過按位與操作符(&)巧妙運算實現
Example: 當num=15時,
1//num&(num-1)=(1111)&(1110)=(1110)
2//num&(num-1)=(1110)&(1101)=(1100)
3//num&(num-1)=(1100)&(1011)=(1000)
4//num&(num-1)=(1000)&(0111)=0 ,循環停止。共執行4次while循環。
(2)python二進制數字擴展閱讀
一、指定的某一位數置1
宏 #define setbit(x,y) x|=(1<<y)
二、指定的某一位數置0
宏 #define clrbit(x,y) x&=~(1<<y)
三、指定的某一位數取反
宏 #define reversebit(x,y) x^=(1<<y)
四、獲取的某一位的值
宏 #define getbit(x,y) ((x) >> (y)&1)
Ⅲ python輸入一個三位數 輸出百位十位個位數字的二進制數
s = 123
for i in list(str(s)):
print(bin(int(i)))