0063-二进制转换成十进制

二进制转换成十进制
难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B

试题描述

给定一个不超过 10 位的二进制数 n,将其转换成十进制数后输出。


输入

一个符合规范的二进制的数。

输出

一个数,符合题目要求的结果。

输入示例

1000100

输出示例

68

  此题考查大家对数学基本知识的了解程度。从二进制转换为十进制的方法为:从右往左数第n位乘2的n次方。

  通过while循环(即满足括号里条件是执行操作)进行当n不为零(即未转换完成)时完成一步操作来达到转换的目的。

  了解了这个就好办了。

  代码:

#include<bits/stdc++.h>
using namespace std;
int n,x=1,ans;//x初始值赋-1,当做指数。
int main()
{
	scanf("%d",&n);
	while(n)//按转换公式计算。
	{
		ans+=n%10*x;//当前末位的x次方(详见上文转换方法)。
		x*=2;//指数增大。
		n/=10;//除去刚刚的末位。
	}
	printf("%d",ans);
	return 0;
}

原文地址:https://www.cnblogs.com/DARTH-VADER-EMPIRE/p/9736665.html

时间: 2024-10-09 17:55:52

0063-二进制转换成十进制的相关文章

二进制转换成十进制的问题

if(x%2 == count%2)  //if括号内为判断 ,可替换    r += i;        i *= 2;             //上两行解决了二进制转换成十进制的问题

用Linux/Unix命令把十六进制转换成十进制(转)

那天写个脚本,需要把十六进制的数字转成十进制的打出来,发现不知道要怎么弄,搜一下,原来还是很简单的,比用C语言什么的容易多了,就一些现成的命令就解决了. 先列两种简单的方法: 1) echo 自己就能实现,相当简单.不过,不知道如果要从十进制转换回十六进制能怎么写. ]$ echo $((0xac))    172 2) printf 也可以哦,十六进制和十进制互相转换都没问题 ]$ printf %d 0xac    172    ]$ printf %x 172    ac 然后,稍微麻烦一

其他进制的数值转换成十进制数值的方法

二进制转换成十进制 存在二进制数 01110101 先写上 0 1 1 1 0 1 0 1 然后填充,零位不填 2^6=64 2^5=32 2^4=16 2^2=4 2^0=1 相加 64 32 16 4 1 最后结果 117 十六进制数转换成十进制 存在十六进制数 2AF5 先写上 2 A F 5 然后填充 2*16^3 10*16^2 10*16^1 10*16^0 相加最后结果 10997 八进制数转换成十进制 存在八进制数 24378 先写上 2 4 3 7 8 然后填充 2*8^4 4

十进制转换成二进制以 二进制转换成 8进制和16进制

十进制转换成二进制 举例:752(十进制数) --> 转换成 二进制数 从下往上 读取数据 二进制数为 : 011110000 2.二进制转换成8进制 (开头用 0 表示) 111 -> 表示的十位数 为 7,也是 8进制 每位上 最大的数字 011110000 转换为  8进制 ,从右到左  ,三位 隔开      011-110-000 , 3.二进制转换成16进制(开头用0x表示) 与 二进制转换 大体相同,区别在于 , 在二进制数中,每四位数隔开 ,再分别计算 得到十进制 ,再 进行

C语言十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方

#include <stdio.h> /* 十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方: 在16进制中:a(A)=10 b(B)=11 c(C)=12 d(D)=13 e(E)=14 f(F)=15 例如:CE=12*16^1+14*16^0=192+14=206 */ unsigned short int right(unsigned short int num, int n){ return (num<<n) | (num>>(sizeof

数组-08. 字符串转换成十进制整数(15)

1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main(){ 5 string s; 6 int i,sum=0; 7 bool flag=false,f=false; 8 getline(cin,s); 9 for(i=0;s[i]!='#';++i){ 10 if(s[i]=='-'&&!flag) 11 f=true; 12 else if(s[i]<='9'&a

数组-08. 字符串转换成十进制整数

数组-08. 字符串转换成十进制整数(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果过滤后字符串的首字符为“-”,代表该数是负数. 输入格式: 输入在一行中给出一个以#结束的非空字符串. 输出格式: 在一行中输出转换后的十进制数.题目保证输出在长整型范围内.

5-2?字符串转换成十进制整数

5-2 字符串转换成十进制整数   (15分) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果在第一个十六进制字符之前存在字符"-",则代表该数是负数. 输入格式: 输入在一行中给出一个以#结束的非空字符串. 输出格式: 在一行中输出转换后的十进制数.题目保证输出在长整型范围内. 输入样例: +-P-xf4+-1!# 输出样例: 这个题有一个坑点: 就是如果是0的话前面没有负号 -390

3、将二进制转换成十六进制

/* 将二进制转换成十六进制 */ class BinaryToHex { public static void main(String[] args) { int num = 120; char[] result = new char[1024]; int count = 0; while((num & 15) > 0) { int tmp1 = num & 15; if(tmp1 > 9) { result[count] = (char)(tmp1 - 10 + 'A');