读入二进制数转换为十进制输出

题目描述

已知一个只包含0和1的二进制数,长度不大于10,将其转换为十进制并输出。

输入描述

输入一个二进制整数n,其长度不大于10

输出描述

输出转换后的十进制数,占一行

样例输入

110

样例输出

6

 

方法一:使用C++类库中的二进制数据类,用气方法转换成十进制输出

代码如下:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 #include <bitset>
 5  
 6  int main()
 7 {
 8     bitset<16> bint;  // 16 bit 二进制数据,还有 bitset<32>
 9 
10     cin >> bint;
11     cout << bint.to_ulong() << endl;
12  
13     return 0;
14 }

 

转载于:https://www.cnblogs.com/xymys/p/9538349.html

汇编语言可以通过一系列的运算和转移指令来实现二进制转化为十进制。具体实现步骤如下: 1. 读取二进制:使用输入指令,将二进制读入寄存器中。 2. 将二进制转化为十进制:将二进制拆分,每一上的乘以相应的权重(2的幂次方),最后将所有结果相加即可得到十进制。 3. 输出十进制:使用输出指令,将十进制输出到指定置。 以下是汇编语言实现二进制转化为十进制的示例代码: ``` section .data binary db 10101010b ; 定义一个二进制 result db 0 ; 定义一个存储结果的变量 section .text global _start _start: ; 读取二进制 mov al, [binary] ; 将二进制转化为十进制 mov bl, 1 ; 初始权重为1 mov cl, 8 ; 循环8次,对应8二进制 mov dh, 0 ; 存储结果的高 mov dl, 0 ; 存储结果的低 loop_start: shr al, 1 ; 将二进制右移一,相当于除以2 jnc skip_add ; 如果最低为0,则跳过加法运算 add dl, bl ; 加上当前的权重 skip_add: inc bl ; 权重乘以2 dec cl ; 循环计器减1 jnz loop_start ; 如果循环计器不为0,则继续循环 mov [result], dl ; 将结果存储到变量中 ; 输出十进制 mov eax, 4 ; 调用输出指令 mov ebx, 1 ; 输出到标准输出设备 mov ecx, result ; 输出结果变量的地址 mov edx, 1 ; 输出1个字节 int 0x80 ; 调用系统中断 ; 退出程序 mov eax, 1 ; 调用退出指令 xor ebx, ebx ; 返回值为0 int 0x80 ; 调用系统中断 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值