十进制十进制100转化为二进制制

君,已阅读到文档的结尾了呢~~
二进制转十进制表 二进制转十进制 十进制转二进制算法 十进制如何转二进制 十进制数转二进制数 十进制小数转二进制 java二进制转十进制 二进制转十进制器 vb 十进制转二进制 二进制转十进制c
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
1-256十进制转二进制表
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口10进制和二进制之间怎么转换_百度知道
10进制和二进制之间怎么转换
十进制转二进制(整数及小数部分): 1、把该十进制数,用二因式分解,取余。 以235为例,转为二进制 235除以2得117,余1 117除以2得58,余1 58除以2得29,余0 29除以2得14,余1 14除以2得7,余0 7除以2得3,余1 3除以2得1,余1 从得到的1开始写起,余数倒排,加在它后面,就可得。 2、把十进制中的小数部份,转为二进制。   把该小数不断乘2,取整,直至没有小数为止,注意不是所有小数都能转为二进制! 以0.75为例, 0.75剩以2得1.50,取整数1 0.50剩以2得1,取整数1,顺序取数就可得0.11。 二进制数为十进制数 整数部分从低位至高位1,2,4,8,16,32.这是比较方便的,只需把二进制是写成展开式;计算即得. 例1 化101101(二进制)为十进制数. 101101(二进制)=1*2⑤+0*2④+1*2③+1*2②+0*2①+1*1=32+0+8+4+0+1=45 例 2 化(二进制)为十进制数. (二进制)=1*2⑨+1*2⑦+1*2⑥+1*2④+1*2②+1*1=512+128+64+16+4+1=725 小数部分从小数点位置开始:1/2,1/4,1/8,1/16.. 即:=&8+2+1/2+1/8+1/16 (“^”代表幂) =&1*2^3+1*2^2+0*2^1+1*2^0+0*2^(-1)+1*2^(-2)+1*2^(-3)+1*2^(-4) 小数部分是如果小数点后第一位为1的话就加上0.5(即1/2),第二位加上0.25(1/4),第三位加上0.125(1/8),接着就是1/16,1/32,1/64.无论算出多少都是正确的。你也可以后过来算,你算了十进制数后,就拿小数部分*2, 如7/16=0.4375 0..875 整数部分为0 即当前二进制数值为:0.0 0.875*2=1.75 整数部分为1 即当前二进制数值为:0.01 去掉1后继续运算。 0.75*2=1.5 整数部分为1 即当前二进制数值为:0.011 去掉1后继续运算。 0.5*2=1.0 整数部分为1 即当前二进制数值为:0.0111 去掉1后为0,运算结束。 0.4375的二进制数为:0.0111
二进制的数和十进制一样呀拿十进制数除以2所得的余数35除以2=17余117除以2=8余1 8除以2=4余0 4除以2=2余0 2除以2=1余0 1除以2=0余1所以35的二进制数应该是的五次方+2的一次方+2的0次方
1很简单 用windows自带的计算器,有一个科学模式,会出来进制转换的2 2进制到10进制 从右到左,分别是2的0次,2的1次,依次类推,在乘以各自位置的数,0的乘0,1的乘1,然后相加就可以了! 十进制到二进制①正常算法:如:10 10÷2=5…0 5÷2=2…1 2÷2=1…0 1÷2=0…1 所以10=(1010)2 除到商为0为止,取余数。 ②投机法:(1)=1 (10)=2 (100)=4 (000)=16 ( …… 把十进制数折成以上的这些数的和,先尽量取大数。如 10=8+2=(1000)+(10)=(1010) 11=8+2+1=(1000)+(10)+(1)=(1011) 40=32+8=(100000)+(1000)=(101000)
为您推荐:
其他类似问题
进制的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。进制转换_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。
进制转换进制转换的本质(进制转换原理)
我们知道十进制转换成R进制用短除法,但是为什么用短除法呢?请往下看。
“数制”只是一套符号系统来表示指称“量”的多少。我们用“1”这个符号来表示一个这一“量”的概念。自然界的“量”是无穷的,我们不可能为每一个“量”都造一个符号,这样的系统没人记得住。所以必须用有限的符号按一定的规律进行排列组合来表示这无限的“量”。符号是有限的,这些符号按照某种规则进行排列组合的个数是无限的。十进制是10个符号的排列组合,二进制是2个符号的排列组合。
在进行进制转换时有一基本原则:转换后表达的“量”的多少不能发生改变。二进制中的111个苹果和十进制中的7个苹果是一样多的。
十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分 千分……
R进制中的数位排列是这样的……R^4 R^3R^2 R^1 R^0 R^-1 R^-2 R^-3……
可以看出相邻的数位间相差进制的一次方。
以下部分来源:知乎网友
进制这事儿,说到底就是位值原理,即:同一个数字,放在不同的数位上,代表不同大小的“量”。例如:十进制中,百位上的1表示100,十位上的1表示10。
任何进制中,每个数都可以按展开成各个数位上的数字乘以对应数位的位权,再相加的形式,如:  十进制的123=1×100+2×10+3×1  十进制的00+8×100+7×10+6×1  问:为啥相应的数位是、10、1?为啥不是4、3、2、1?
答:十进制,满十进一,再满十再进一,因此要想进到第三位,得有10×10;第4位得有10×10×10
这样我们就知道了:
对10进制,从低位到高位,依次要乘以10^0,10^1,10^2,10^3……,也就是1、10、100、1000  对2进制,从低位到高位,依次要乘以2^0,2^1,2^2,2^3……,也就是1、2、4、8、……  下面我们开始转换进制(以十进制换成二进制为例):  原来十进制咱们的数位叫 千位、百位、十位……  现在二进制数位变成了八位、四位、二位……  模仿上面十进制按位权展开的方式,把二进制数1011按权展开: ^3+0×2^2+1×2^1+1×2^0=1×8+0×4+1×2+1×1=8+2+1=11  接下来我们进行十进制往二进制的转换:  比较小的数,直接通过拆分就可以转换回去  比如13,我们把数位摆好八位、四位、二位,不能写十六了,因为一旦“十六”那个数位上的符号是“1”,那就表示有1个16,即便后面数位上的符号全部是“0”,把这个二进制数按权位展开后,在按照十进制的运算规律计算,得到的数也大于13了。那最多就只能包含“八”这个数位。 13-8=5,5当中有4,5-4=1  好啦,我们知道13=1*8+1*4+0*2+1*1 把“1”、“1”、“0”“1”这几个符号放到数位上去:
八位、四位、二位、一位  1 1 0 1  于是十进制数13=二进制数1101  现在你按照书上说的短除法来试试,会发现它和你凑数得到的结果刚好是一样的,为什么短除法可以实现进制的转换呢?为什么每次要除以进制呢?为什么要把余数倒着排列呢?  想要知道其中的道理的话,请仔细品味以下的递归原理(不知道递归没关系):  (1)一个十进制数321的末尾是1,意味着一定是……+1,省略号部分一定是10的倍数,所以一个十进制数末尾是1意味着十进制数除以进制10一定余1。所以第一次除以10之后的余数,应该放在十进制的最后一个数位“个位”,也就是说个位上的符号是1。
类比,一个二进制数111(注意,数值不等于上面十进制的111)末尾是1,意味着一定是……+1,前面的省略号部分都是2的倍数。所以一个二进制数末尾是1,意味着它对应的十进制数除以进制2一定余1。所以第一次除以2之后的余数,应该放在二进制的最后一个数位“一位”,也就是说一位上的符号是1。
(2)如果一个十进制数321“十位”是2,我们希望把它转换为(1)的情况。那么我们把这个十进制数的末尾抹掉,也就是减去“个位”上的1,再除以进制10,得到32。这样原来“十位”上的“2”就掉到了“个位”上。再把32做(1)的处理。
类比,如果一个二进制数111“二位”是1,我们希望把它转换为(1)的情况,那么我们把这个二进制数的末尾抹掉,也就是减去“一位”上的1,再除以进制2,得到11。这样原来“二位”上的“1”就掉到了“一位”上。再把11做(1)的处理。
总结:其实这个过程就是把各个数位上的符号求出来的过程。
现在你应该可以回答以下问题了:为什么短除法可以实现进制的转换呢?为什么每次要除以进制呢?为什么要把余数倒着排列呢?
R进制转换成十进制就是按权位展开,把展开式放到十进制下,再按照“十进制”的运算规律计算。因为是十进制,所以就允许使用2、3、4、5、6、7、8、9了。所以2的n次方就不用写成指数,而可以用另外的八个符号来表示了。
进制转换十进制---&二进制
对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。
给你一个十进制,比如:6,如果将它转换成数呢?
10进制数转换成二进制数,这是一个连续除以2的过程:
把要转换的数,除以2,得到商和余数,
将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。
听起来有些糊涂?结合例子来说明。比如要转换6为二进制数。
“把要转换的数,除以2,得到商和余数”。
十转二示意图
要转换的数是6, 6 ÷ 2,得到商是3,余数是0。
“将商继续除以2,直到商为0……”
现在商是3,还不是0,所以继续除以2。
那就: 3 ÷ 2, 得到商是1,余数是1。
“将商继续除以2,直到商为0……”
现在商是1,还不是0,所以继续除以2。
那就: 1 ÷ 2, 得到商是0,余数是1
“将商继续除以2,直到商为0……最后将所有余数倒序排列”
好极!现在商已经是0。
我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了!
6转换成,结果是110。
把上面的一段改成用表格来表示,则为:
(在计算机中,÷用 / 来表示)
进制转换二进制---&十进制
二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个数:,转换为10进制为:
下面是竖式:
第0位 0 * 20 = 0
第1位 0 * 21 = 0
第2位 1 * 22 = 4
第3位 0 * 23 = 0
第4位 0 * 24 = 0
第5位 1 * 25 = 32
第6位 1 * 26 = 64
第7位 0 * 27 = 0
公式:第N位2(N)
---------------------------
用横式计算为:
0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1* 26 + 0 * 27 = 100
0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1 * 22 + 1 * 25 +1*26 = 100
进制转换十进制---&八进制
10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成8。
来看一个例子,如何将十进制数120转换成八进制数。
用表格表示:
120转换为8进制,结果为:170。
进制转换八进制---&十进制
就是逢8进1。
八进制数采用 0~7这八数来表达一个数。
八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……
所以,设有一个八进制数:1507,转换为十进制为:
用竖式表示:
1507换算成。
第0位 7 * 80 = 7
第1位 0 * 81 = 0
第2位 5 * 82 = 320
第3位 1 * 83 = 512
--------------------------
同样,我们也可以用横式直接计算:
7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
结果是,八进制数 1507 转换成十进制数为 839
进制转换十进制---&十六进制
10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成16。
同样是120,转换成16进制则为:
120转换为16进制,结果为:78。
进制转换十六进制---&十进制
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算:
2AF5换算成10进制:
第0位: 5 * 160 = 5
第1位: F * 161 = 240
第2位: A * 162 = 2560
第3位: 2 * 163 = 8192
-------------------------------------
直接计算就是:
5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:
1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100
进制转换二进制---&八进制
()(二)
整数部分:[1]
从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有:
然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式
进制转换八进制---&二进制
(31.5)(八)
整数部分:从后往前每一位按转化方式转化为三位,缺位处用0补充 则有:
1----&1----&001
然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的形式
进制转换二进制---&十六进制
二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见,直接就能转换为,反之亦然。
我们也一样,只要学完这一小节,就能做到。
首先我们来看一个二进制数:1111,它是多少呢?
你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。
然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的为23 = 8,然后依次是 22 = 4,21=2, 20 = 1。
记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。
下面列出四位xxxx 所有可能的值(中间略过部分)
仅四位的二进制数
快速计算方法
十六进制值
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
对应的十六进制数
进制转换十六进制---&二进制
反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?
看到F,我们需知道它是15(可能你还不熟悉A~F这六个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
接着转换 D:
看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。
所以,FD转换为二进制数,为:
由于成二进制相当直接,所以,我们需要将一个转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:
结果16进制为: 0x4D2
然后我们可直接写出0x4D2的二进制形式: 10。
其中对映关系为:
同样,如果一个很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。
下面举例一个int类型的二进制数:
我们按四位一组转换为16进制: 6D E5 AF 1B
再转换为10进制:6*167+D*166+E*165+5*164+A*163+F*162+1*161+B*160=1,843,769,115
进制转换十进制---&负进制
下面是将十进制数转换为负R进制的公式:
N=(dmdm-1...d1d0)-R
=dm*(-R)m+dm-1*(-R)m-1+...+d1*(-R)1+d0*(-R)0
15=1*(-2)4+0*(-2)3+0*(-2)2+1*(-2)1+1*(-2)0
=10011(-2)
进制转换负数
负数的进制转换稍微有些不同。
先把负数写为其补码形式(在此不议),然后再根据二进制转换其它进制的方法进行。
例:要求把-9转换为八进制形式。则有:
-9的补码为11 0111。从后往前三位一划,不足三位的加0
然后我们将结果按从下往上的顺序书写就是:177767,那么177767就是十进制数-9的八进制形式。
其实转化成任意进制都是一样的。
初学者最容易犯的错误!!!!!!!
犯错:(-617)D=(-1151)O=(-269)H
原因分析:如果是正数的话,上面的思路是正确的,但是由于正数和负数在原码、反码、补码转换上的差别,所以按照正数的求解思路去对负数进行求解是不对的。
正确的方法是:首先将-617用补码表示出来,然后再转换成八进制和十六进制(补码)即可。
注:二进制补码要用16位。
正确答案::(-617)D=(176627)O=(fd97)H
负数十进制转换成八进制或十六进制方法
如(-12)10=( )8=( )16
第一步:转换成二进制
第二步:补码,取反加一
注意:取反时符号位不变!
第三步:转换成八进制是三位一结合:)
转换成十六进制是四位一结合:fff4(16)
进制转换小数
最近有些朋友提了这样的问题“0.8的十六进制是多少?”
0.8、0.6、0.2... ...一些数字在进制之间的转化过程中确实存在麻烦。
就比如“0.8的十六进制”吧!
无论怎么乘以16,它的余数总也乘不尽,总是余0.8
具体方法如下:
0.8*16=12.8
0.8*16=12.8
取每一个结果的整数部分为12既十六进制的C
如果题中要求精确到小数点后3位那结果就是0.CCC
如果题中要求精确到小数点后4位那结果就是0.CCCC
现在OK了。
进制转换C++
进制转换十进制转k进制
#include&cstdio&
#include&iostream&
#include&ctime&
char&a[1000];
using&namespace&
int&main()
&&&&int&y=0,k,n,x;
&&&&char&z='A';
&&&&scanf&(&%d&%d&,&n,&x);
&&&&while&(n!=0)
&&&&&&&&&&y++;
&&&&&&&&&&&&&a[y]=n%x;
&&&&&&&&&&n=n/x;
&&&&&&&&&&if&(a[y]&9)&a[y]=z+(a[y]-10);&
&&&&&&&&&&else&a[y]=a[y]+'0';
&&&&for&(int&i=y;i&0;i--)
&&&&printf&(&%c&,a[i]);
&&&&return&0;
进制转换m进制转10进制
#include&cstdio&
#include&iostream&
#include&cstdlib&
#include&cstring&
char&a[10000];
using&namespace&
int&main()
&&&int&n,m;
&&&int&f=0;
&&&scanf&(&%s%d&,a,&m);
&&&for&(int&i=0;i&strlen(a);i++)
&&&&&&&&f*=m;
&&&&&&&&if&(a[i]=='A'||a[i]=='B'||a[i]=='C'||a[i]=='D'||a[i]=='E'||a[i]=='F')
&&&&&&&&&&&&f=f+(a[i]-'A'+10);
&&&&&&&&else
&&&&&&&&&&&&f=f+(a[i]-'0');
&&&printf&(&%d&,f);
&&&return&0;
注:用C语言的格式化输入输出可以快速转换10进制,8进制和16进制。例子:10进制转16进制:
#include&&cstido&
int&main()
&&&&int&a;
&&&&scanf(&%d&,&a);
&&&&printf(&%x&,a);
&&&&return&0;
进制转换C语言代码
#include&stdio.h&
#include&math.h&
longn,m,r;
while(scanf(&%ld%ld&,&n,&r)!=EOF)
if(abs(r)&1&&!(n&0&&r&0))
longresult[100];
printf(&%ld=&,n);
while(n!=0)
m=n/r;*p=n-m*r;
if(*p&0&&r&0)
*p=*p+abs(r);m++;
for(m=p-result-1;m&=0;m--)
if(result[m]&9)
printf(&%c&,55+result[m]);
printf(&%d&,result[m]);
elseprintf(&0&);
printf(&(base%d)\n&,r);
/*以下为10进制以下转换。。。*/
/*用函数,可直接拷贝。。。*/
/*(VS2008环境下C++控制台代码)*/
#include&stdafx.h&
#include&stdio.h&
intx[100];
intjzzh(inty,intml)
for(inta=1;;a++)
returnx[0];
intmain(intargc,char*argv[])
printf(&Hello,world\n&);
printf(&请输入需要转换至进制数:&);
scanf(&%d&,&y);
printf(&请输入数字:&);
scanf(&%d&,&ml);
jzzh(y,ml);
for(a=x[0];a&=1;a--)
printf(&%d&,x[a]);
printf(&\n&);
进制转换Java代码
Java代码实现分别转换为十六,二,八进制。
核心思想就是。
public class Change { /*转为16进制*/ static void cha_16(int n)
{ if(n &= 16) cha_16(n/16);
if(n%16 & 10)System.out.print(n%16);
else System.out.print((char)(n%16 + 55)); } /*转为2进制*/
static void cha_2(int n)
{ if(n &= 2) cha_2(n/2);
System.out.print(n%2); } /*转为8进制*/
static void cha_8(int n)
{ if( n &= 8) { cha_8(n/8);
System.out.print(n%8); }
else System.out.print(n); } /*主程序入口*/
public static void main(String[] args)
{ int a=27,b=9,c=19; /*定义输入的转换数值*/ System.out.print(&十进制数&+a+&=&十六进制输出:&);
cha_16(a); System.out.println(); /*换行*/
System.out.print(&十进制数&+b+&=&二进制输出:&);
cha_2(b); System.out.println();
System.out.print(&十进制数&+c+&=&八进制输出:&);
cha_8(c); }}
.百度空间.[引用日期]千里之行 始于足下
欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 7007 人关注过本帖
标题:自己编写的一个10进制转化成二进制的代码
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
结帖率:100%
&&已结贴√
&&问题点数:10&&回复次数:5&&&
自己编写的一个10进制转化成二进制的代码
但是我这个代码转化 要求10进制收到long int的限制 有高手给点新建议么#include&stdio.h&
long int change(long int n,long int sum)
{long int a,d,b=1,i;
if(n==1) return(sum+1);
{for(a=2,i=1;2*a&=n;a=2*a,i++);
&&&&&for(d=1;d&=i;d++) b=b*10;
&&&&&sum=sum+b;
&&&&&if(a==n)
&&&&&&&&&return(sum);
&&&&&{b=1;change((n-a),sum);}
void main()
{printf(&输入一个10进制的数字,请别太大 因为该算法局限有被long int局限\n&);
long int n,
scanf(&%d&,&n);
sum=change(n,0);
printf(&输出的二进制是%d\n&,sum);
搜索更多相关主题的帖子:
等 级:小飞侠
帖 子:660
专家分:2400
支持输入数据小于(10^100)
程序代码:#include &stdio.h&
#include &stdlib.h&
int a[<font color=#],L;
char s[<font color=#];
void print(int *a)
&&&&&int tmp=a[<font color=#]%<font color=#,i;
&&&&&a[<font color=#]-=
&&&&&for (i=L-<font color=#; i&=<font color=#; i--)
&&&&&&&&&if (a[i]%<font color=#==<font color=#)
&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&a[i]--; a[i-<font color=#]+=<font color=#;
&&&&&&&&&}
&&&&&&&&&a[i]/=<font color=#;
&&&&&while (a[L-<font color=#]==<font color=# && L&<font color=#) L--;
&&&&&if (L&<font color=# || a[L-<font color=#]&<font color=#) print(a);
&&&&&printf(&%d&,tmp);
void change(char *s,int *a)
&&&&&L=strlen(s);
&&&&&for (i=<font color=#; i&L; i++) a[i]=s[L-<font color=#-i]-'<font color=#';
int main()
&&& printf(&Input a Number(&=10^100:&);
&&& gets(s);&&& //读入
&&& change(s,a);&&&// 把s中的字符转化为数字存进数组a里
&&& print(a);
&&& printf(&\n&);
&&& system(&pause&);
&&& return <font color=#;
[ 本帖最后由 czz5242199 于
15:32 编辑 ]
等 级:侠之大者
帖 子:165
专家分:422
程序代码:/*这个程序是用回来对各种进制之间的转换(2到32),由于我是初学者,所以不考虑小数*/
#include &stdio.h&
#include &math.h&
#include &string.h&
#define N 32
int pow1(int a,int b) /*次函数的功能类似有math.h中的pow,但本函数返回的是整数*/
&&&&&& { int
&&&&&&&&&if(b==<font color=#) return <font color=#;
&&&&&&&&&if(b&<font color=#) c=a*pow1(a,b-<font color=#);
&&&&&&&&&return
&void f(int sum,int c,char *p,int i)/*此函数用来确定转换后的数字的各个位数上的数*/
&&&&&& { int j,n;&&&&&&&&&&&&
&&&&&&&&&for(n=i;n&=<font color=#;n--)
&&&&&&&&&for(j=<font color=#;j&c;j++)
&&&&&&&&&if(sum&(pow1(c,n)*(j+<font color=#))&&sum&=(pow1(c,n)*j)) { *(p+i-n)=j,sum=sum-pow1(c,n)*j;break;}
&&&&&&&&&*(p+i+<font color=#)=<font color=#;
int w(int sum,int c)/*此函数用来判断转换后的数字有几位(i+1)*/
&&&&&& {int
&&&&&&&&for(i=<font color=#; ;i++)
&&&&&&&&&{
&&&&&&&&& if((sum&pow1(c,i+<font color=#))&&(sum&=pow1(c,i))) break;
&&&&&&&&&}
&&&&&&&&return
{int a,c,i,sum,j,k,l,
&char b[N]={<font color=#},h[<font color=#]={<font color=#};
&{sum=<font color=#;flag=<font color=#;
&&printf(&***************************************************\n&);
&&printf(&**&&&&&&&&&&&&^_^&&WELCOME&&^_^&&&&&&&&&&&&&&&&&&**\n&);
&&printf(&***************************************************\n&);
&&{ flag=<font color=#;
&&& printf(&\n&&&&&&请输入你所要转换的整数(输入0退出):&);
&&& scanf(&%s&,b);&&l=strlen(b);&&&if(!strcmp(b,&<font color=#&)) break;
&&& for(i=<font color=#;b[i]!=<font color=#;i++)&&/*由于输入的是字符,所以用以下转换*/
&&& {&&if(b[i]&='<font color=#'&&b[i]&='<font color=#')
&&&&&&&&& b[i]-='<font color=#';
&&&&&& if(b[i]&='a'&&b[i]&='z')
&&&&&&&&& b[i]=b[i]-'a'+<font color=#;
&&&&&& if(b[i]&='A'&&b[i]&='Z')
&&&&&&&&& b[i]=b[i]-'A'+<font color=#;
&&& for(;;)
&&&&&& { printf(&\n&&&&&&&&你所输入的数的进制为(2到32):&);
&&&&&&&&&scanf(&%d&,&a);
&&&&&&&&&if(a&<font color=#||a&<font color=#)
&&&&&&&&& {printf(&\n&&&&&&&&& 您的输入有误,请重新输入!\n&);
&&&&&&&&&&&continue;
&&&&&&&&& }
&&&&&&&&&break;
&&& for(i=<font color=#;i&l;i++)
&&&&&&if(b[i]&=a)&&
&&&&&&&&&{printf(&\n&&&&&&&&& 您的输入有误,请重新输入!\n&);
&&&&&&&&& flag=<font color=#;
&&&&&&&&& break;
&&&&&&&&&}
&&& if(flag==<font color=#) continue;
&&& break;
&&if(!strcmp(b,&<font color=#&)) break;
&&& printf(&\n请输入你要把该数转换为的进制(2到32):&);
&&&&&scanf(&%d&,&c);
&&& if(c&<font color=#||c&<font color=#)
&&&&&& {printf(&\n&&&&&&&&& 您的输入有误,请重新输入!\n&);
&&&&&&&&continue;
&&& break;
&&for(j=<font color=#;j&l;j++)
&&&&&sum=sum+pow1(a,j)*b[l-j-<font color=#]; /*把输入的数字转换为十进制数*/
&&if(c==<font color=#)
&&& {printf(&\n&&&把该数字从%d进制转化到%d 进制为:%d\n&,a,c,sum);
&&&&&continue;
&&i=w(sum,c); /*判断最高位*/
&&f(sum,c,h,i);
&&&for(k=i;k&=<font color=#;k--) /*以下转换是把相应的数字转换为字符*/
&&& {&&if(h[k]&=<font color=#&&h[k]&=<font color=#)
&&&&&&&&& {h[k]=h[k]+'<font color=#';continue;}
&&&&&& if(h[k]&=<font color=#&&h[k]&=<font color=#)
&&&&&&&&& {h[k]=h[k]+<font color=#;continue;}
&&&printf(&\n&&&把该数字从%d进制转化到%d 进制为:&,a,c);puts(h);
[ 本帖最后由 饭桶 于
17:48 编辑 ]
附件: 您没有浏览附件的权限,请
人得一生得奋斗!
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
虽然看不懂 但还是谢谢你了 感谢!
没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
等 级:论坛游民
帖 子:17
专家分:18
#include &stdio.h&
#define LONG sizeof(long)*8
int main(void)
&&& int binary[LONG];
&&& scanf(&%ld&,&l);
&&& for(i=0;i&LONG;i++)
&&&&&&binary[i] = ((l & (1 && i)) ? 1 : 0);
&&& for(i=LONG-1;i&=0;i--)
&&&&&& printf(&%d&,binary[i]);
&&&&&&&&&&&&&&&&&&&&&&&&
&&& getch();
&&& return 0;
等 级:论坛游民
帖 子:13
专家分:17
版权所有,并保留所有权利。
Powered by , Processed in 0.106771 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 八进制转十进制 的文章

 

随机推荐