Python中对比两个十进制数,输出相同为0,不同为1
时间: 2023-06-13 15:08:53 浏览: 57
可以将两个十进制数转化为二进制数,然后逐位进行比较。如果相同则为0,不同则为1。下面是一个简单的实现:
```python
def compare_decimals(num1, num2):
# 将十进制数转化为二进制数
bin1 = bin(num1)[2:]
bin2 = bin(num2)[2:]
# 将两个二进制数补齐到相同的位数
max_len = max(len(bin1), len(bin2))
bin1 = bin1.zfill(max_len)
bin2 = bin2.zfill(max_len)
# 逐位比较
result = ''
for i in range(max_len):
if bin1[i] == bin2[i]:
result += '0'
else:
result += '1'
return int(result, 2)
```
这个函数接收两个十进制数 `num1` 和 `num2`,返回它们的二进制数的逐位比较结果。比如:
```python
>>> compare_decimals(10, 5)
7
```
10 的二进制数是 `1010`,5 的二进制数是 `0101`。逐位比较结果为 `1111`,转化为十进制数为 7。
相关问题
Python中计算十进制数的异或,如何输出相同为0,不同为1
在Python中,可以使用异或运算符 `^` 来计算十进制数的异或。异或运算符的规则是:两个二进制位相同则为0,不同则为1。因此,我们可以先将十进制数转换为二进制,再进行异或运算,最后将结果再转换回十进制输出。下面是一个简单的示例代码:
```python
a = 10
b = 5
c = a ^ b
print(bin(a)[2:].zfill(8))
print(bin(b)[2:].zfill(8))
print(bin(c)[2:].zfill(8))
```
输出结果为:
```
00001010
00000101
00001111
```
可以看到,10和5的二进制表示分别为 `00001010` 和 `00000101`,它们的异或结果为 `00001111`,即十进制的15。如果要输出相同为0,不同为1的格式,只需要将 `c` 转换为二进制后,再用字符串的替换方法将0替换为1,1替换为0即可:
```python
result = bin(c)[2:].zfill(8).replace('0', '2').replace('1', '0').replace('2', '1')
print(result)
```
输出结果为:
```
00001110
```
可以看到,结果为 `00001111` 的二进制形式被转换为了相同为0,不同为1的形式 `00001110`。
用python键盘输入一个十进制数,将十进制数转化为二进制数
非常欢迎您使用ChitGPT与我进行对话!关于您的问题,我可以为您提供以下Python程序:
```
num = int(input("请输入一个十进制数:")) # 获取键盘输入的十进制数
binary = [] # 创建一个空列表,用于存储转换后的二进制数
while num > 0: # 当十进制数仍然大于0时,执行循环
binary.append(num % 2) # 将十进制数除以2的余数加入列表中
num //= 2 # 将十进制数除以2的商作为新的十进制数
binary.reverse() # 将列表中的元素倒序排列
print("转换后的二进制数为:", end='') # 输出提示信息
for digit in binary: # 循环遍历列表中的元素
print(digit, end='') # 输出每个二进制位的值
```
当您运行此程序并输入一个十进制数后,它将输出对应的二进制数。希望我的回答能够帮到您!