一道编程题,将一个整数转化为二进制,然后逆序,然后转成整数
时间: 2023-05-26 12:02:57 浏览: 146
以下是 Python 代码实现:
```
def reverse_binary(num):
binary = bin(num)[2:] # 将整数转化为二进制字符串
reversed_binary = binary[::-1] # 将二进制字符串逆序
return int(reversed_binary, 2) # 将逆序的二进制字符串转化为整数
# 测试代码
print(reverse_binary(10)) # 输出 5,对应二进制为 101
print(reverse_binary(123)) # 输出 1111001,对应逆序二进制为 1000111,对应整数为 71
```
在此代码中,我们首先使用 `bin()` 函数将整数转化为二进制字符串,然后使用切片操作 `[::-1]` 将二进制字符串逆序。最后使用 `int()` 函数将逆序的二进制字符串转化为整数。注意,`int()` 函数的第二个参数 `2` 表示将字符串当作二进制数来解析。
相关问题
1. 利用顺序栈将一个十进制整数转换成八进制整数,要求输入一个十进制数,输出一个八进制数; 2 利用链栈将一个十进制整数转换成二进制整数,要求输入一个十进制数,输出一个二进制数;
1. 将十进制整数转换成八进制整数,可以采用“除8取余”的方法。具体步骤如下:
- 创建一个顺序栈(数组)来存储每次除法的余数。
- 输入十进制数,从高位开始,不断除以8并记录余数。
- 当商为0时,停止操作,然后从栈顶开始读取余数,逆序拼接得到的就是八进制数。
伪代码示例:
```plaintext
stack = []
num = input_decimal
while num > 0:
remainder = num % 8
stack.append(remainder)
num //= 8
octal_num = ''
while not stack.isEmpty():
octal_num += str(stack.pop())
print(octal_num)
```
2. 转换成二进制整数,则同样从高位开始,用位运算处理:
- 使用链栈(链表结构),每次将剩余的二分之一位存入新的节点。
- 输入十进制数,将其依次左移一位,并检查是否大于1,如果是则新创建一个节点存下1,否则存0。
伪代码示例:
```plaintext
class Node:
def __init__(self, value=0):
self.value = value
self.next = None
head = None
num = input_decimal
while num > 0:
bit = num & 1
new_node = Node(bit)
if head is None:
head = new_node
else:
current_node.next = new_node
num >>= 1
binary_num = ''
current = head
while current is not None:
binary_num += str(current.value)
current = current.next
print(binary_num)
```
c语言编写程序,将十进制非负正整数转换为二进制整数。 转换方法是:除2取余,直道商为0,例如,将13转换为二进制 13/2=6…1 6/2=3…0 3/2=1…1 1/2=0…1 则13转换为二进制位1101 输入:非负整数 输出:二进制整数,位数不超过32位。 【输入输出样例】 输入: 13 输出: 1101 提示:结果可保存在字符数组中,逆序输出。
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
int main(){
int num, i = 0;
char res[33]; // 保存结果的字符数组
scanf("%d", &num);
if(num == 0){
printf("%d", num);
return 0;
}
while(num != 0){
res[i++] = num % 2 + '0'; // 将余数转换为字符
num /= 2;
}
res[i] = '\0'; // 字符串结尾标志
for(i=strlen(res)-1; i>=0; i--) // 逆序输出字符数组
printf("%c", res[i]);
return 0;
}
```
输入样例:
```
13
```
输出样例:
```
1101
```
阅读全文