0

Can anyone please try to break down this code for me. It converts a decimal to binary. I don't understand how the code does that

https://code.sololearn.com/cO2iEpDC1Twd/?ref=app

9th Oct 2022, 10:05 AM
Victor
4 Réponses
+ 1
This is kind of the way I understand it. x= int(input()) def convert(num): if num== 0: return 0 else: bin_val = num % 2 + 10 * convert(num // 2) return (bin_val) print(convert(x)) using a value of 4 order in stack ->FILO First in last out bin_val = (1%2 + 10 % (0 is returned) need to rerun convert with value of 1//2 which = 0 ----> After 0 is returned ----> you have ((1%2)=1) + ((10 * 0)=0) -> return 1 bin_val = (2%2 + 10 % (yet unknown)) need to rerun convert with value of 2//2 which = 1 ----> After 0 is returned again ----> you have ((2%2)=0) + ((10 * 0)=0 -> return 0 bin_val = (4%2 + 10 % (yet unknown)) need to rerun convert with value of 4//2 which = 2 ----> After 0 is returned again ----> you have ((4%2)=0) + ((10 * 0)=0 -> return 0 So all together I have 100 using a value of 5 order in stack bin_val = (1%2 + 10 % (0 is returned) need to rerun convert with value of 1//2 which = 0 ----> After 0 is returned ----> you have ((1%2)=1) + ((10 * 0)=0) -> return 1 bin_val = (2%2 + 10 % (yet unknown)) need to rerun convert with value of 2//2 which = 1 ----> After 0 is returned again ----> you have ((2%2)=0) + ((10 * 0)=0 -> return 0 bin_val = (5%2 + 10 % (yet unknown)) need to rerun convert with value of 5//2 which = 2 ----> After 0 is returned again ----> you have ((5%2)=1) + ((10 * 0)=0 -> return 1 So all together I have 101 using a value of 6 order in stack bin_val = (1%2 + 10 % (0 is returned) need to rerun convert with value of 1//2 which = 0 ----> After 0 is returned ----> you have ((1%2)=1) + ((10 * 0)=0) -> return 1 bin_val = (3%2 + 10 % (yet unknown)) need to rerun convert with value of 3//2 which = 1 ----> After 0 is returned again ----> you have ((3%2)=1) + ((10 * 0)=0 -> return 1 bin_val = (6%2 + 10 % (yet unknown)) need to rerun convert with value of 6//2 which = 3 ----> After 0 is returned again ----> you have ((6%2)=0) + ((10 * 0)=0 -> return 0 So all together I have 110
4th Nov 2022, 8:29 PM
JofS
JofS - avatar
0
To convert integers to binary you keep dividing by 2 until you reach 0.
12th Oct 2022, 7:32 AM
James Lewis
James Lewis - avatar
0
Yeah, I understand that. But the whole calculation setup doesn't seem right to me.
12th Oct 2022, 7:55 AM
Victor
0
Correct me if I'm wrong but doesn't always end up going to zero, thus covering to binary? 7//2 = 6//2 = 3//2 = 1//2 = 0 or 4//2 = 2//2 = 1//2 = 0
12th Oct 2022, 8:57 AM
James Lewis
James Lewis - avatar