#===================================
#2.2 不同進制間的轉換
#===================================#+++++++++++++++++++++++++++++++++++
#2.2.1. 二進制數轉換為十進制數
#+++++++++++++++++++++++++++++++++++#<程序:2-to-10進制轉換>
b=input("Please enter a binary number:")
d=0;
for i in range(0,len(b)):if b[i] == '1':weight = 2**(len(b)-i-1)d = d+weight;
print(d)#<程序:改進后的2-to-10進制轉換>
b=input("Please enter a binary number:")
d=0; weight=2**(len(b)-1);
for i in range(0,len(b)):if b[i] == '1':d = d+weight;weight=weight//2; #‘//’是整數除法
print(d)#+++++++++++++++++++++++++++++++++++
#2.2.2. 十進制數轉換為二進制數
#+++++++++++++++++++++++++++++++++++#<程序:整數的10-to-2進制轉換>
x= int(input("Please enter a decimal number:"))
r = 0;
Rs = [];
while(x != 0):r = x% 2x = x//2Rs = [r]+Rs
for i in range(0,len(Rs)):
#從最高位到最低位依次輸出;Rs[0]存的是最高位, Rs[len(Rs)-1]存的是最低位。print(Rs[i],end='')#<程序:整數的10-to-2進制轉換-遞歸>
def convert(x): #把10進制數x轉換為2進制數,并返回結果列表。if x<2: return([x]) #x=0 或 1,所以返回xr= x%2; #r 是2除x的余數return(convert(x//2)+[r]) # 結果=[x//2的二進制,r]num = int(input("Please enter a decimal number:"))
Rs= convert(num)
for i in range(0, len(Rs)):print (Rs[i],end='')#=====================================================================================#===================================
#2.4. 一切都是邏輯(Logic)
#===================================#+++++++++++++++++++++++++++++++++++
#2.4.3. 用邏輯做加法
#+++++++++++++++++++++++++++++++++++#<程序: 全加器>
def FA(a,b,c): # Full adderCarry = (a and b) or (b and c) or (a and c)Sum = (a and b and c) or (a and (not b) and (not c)) \or ((not a) and b and (not c)) or ((not a) and (not b) and c)return Carry, Sum#<程序:完整的加法器 Carry Ripple adder>
def add(x,y): # x, y are lists of True or False, c is True or False# return carry and a list of x+ywhile len(x) < len(y): x = [False]+x #前面補0while len(y) < len(x): y = [False]+y #前面補0L=[];Carry=Falsefor i in range(len(x)-1,-1,-1): #從最后一位一個個往前加Carry,Sum=FA(x[i],y[i],Carry)L=L+[Sum]return (Carry, L)#<程序:乘法器>
def multiplier(x,y): # 求x*yS=[];for i in range(len(y)-1,-1,-1):if y[i] == True: #y[i]是 1,要將x加進到SC, S=add(S,x)if C==True: S=[C]+Sx=x+[False] #每一次x都要向左移一位,后面補0return(S)
?