导航:首页 > 源码编译 > c语言中各种进制的算法

c语言中各种进制的算法

发布时间:2024-05-26 21:31:47

‘壹’ c语言:写一个程序完成二进制与十进制,十进制与十六进制之间的转换。

计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。以下简介各种进制之间的转换方法:一、二进制转换十进制例:二进制“1101100”1101100←二进制数6543210←排位方法例如二进制换算十进制的算法:1*26+1*25+0*24+1*23+1*22+0*21+0*20↑↑说明:2代表进制,后面的数是次方(从右往左数,以0开始)=64+32+0+8+4+0+0=108二、二进制换算八进制例:二进制的“10110111011”换八进制时,从右到左,三位一组,不够补0,即成了:010110111011然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:010=2110=4+2=6111=4+2+1=7011=2+1=3结果为:2673三、二进制转换十六进制十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:010110111011运算为:0101=4+1=51011=8+2+1=11(由于10为A,芹败所以11即B)1011=8+2+1=11(由于10为A,所以11即B)结果为:5BB四、二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:01100100,转换为10进制为:计算:0*20+0*21+1*22+0*23+0*24+1*25+1*26+0*27=100五、八进制数转换为十进制数八进制就是逢8进1。八进制数采用0~7这八数来表达一个数。八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……所以,设有一个八进制数:1507,转换为十进制为:计算:7*80+0*81+5*82+1*83=839结果是,八进制数1507转换成十进制数为839六、十六进制转换十进制例:2AF5换算成10进制直接计算就是:5*160+F*161+A*162+2*163=10997(别忘了,在上面的计算中,A表示10,而F表示15)、现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。假设有人问你,十进数1234为什么是一千二百三十四?你尽可以给他这么一个算式:1234=1*103+2*102+3*101+4*100十进制与二进制转换之相互算法十进制转二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写就是结果例如302302/2=151余0151/2=75余175/2=37余137/2=18余118/2=9余09/2=4余14/2=2余02/2=1余0故二进制为100101110二进制转十进制从最后一位开始算,依次列为第0、1、2位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然后:1+2+0+8+0+32+64+0=107.二进制01101011=十进制107.一、二进制数转换成十进制数由二进制野首灶数转换成十进制数的基本做法是,把二进制数颂扮首先写成加权系数式,然后按十进制加法规则求和。这种做法称为"按权相加"法。二、十进制数转换为二进制数十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。1.十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。2.十进制小数转换为二进制小数十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。1.二进制与十进制的转换(1)二进制转十进制方法:"按权求和"例:(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(8+0+2+1+0+0.25)10=(11.25)10(2)十进制转二进制·十进制整数转二进制数:"除以2取余,逆序输出"例:(89)10=(1011001)2289244……1222……0211……025……122……121……00……1·十进制小数转二进制数:"乘以2取整,顺序输出"例:(0.625)10=(0.101)20.625X21.25X20.5X21.02.八进制与二进制的转换例:将八进制的37.416转换成二进制数:37.416011111.100001110即:(37.416)8=(11111.10000111)2例:将二进制的10110.0011转换成八进制:010110.00110026.14即:(10110.011)2=(26.14)83.十六进制与二进制的转换例:将十六进制数5DF.9转换成二进制:5DF.9010111011111.1001即:(5DF.9)16=(10111011111.1001)2例:将二进制数1100001.111转换成十六进制:01100001.111061.E即:(1100001.111)2=(61.E)16

‘贰’ C璇瑷鍏杩涘埗,鍗佽繘鍒,鍗佸叚杩涘埗镄勫叕寮忔槸浠涔

姣斿傝村惂10=2镄勪笁娆℃柟锷2镄勪竴娆℃柟锛屾墍浠10镄勪簩杩涘埗灏辨槸110锛屽氨鏄绗涓変綅锛堜粠鍙冲线宸︼级涓婃槸1锛屽氨鏄2镄勪笁娆℃柟涔1锛岀浜屼綅鏄1锛屽氨鏄2镄勫钩鏂逛箻1锛屼緷娆$被鎺ㄣ伞伞傚湪姣斿25涓2镄勫洓娆″姞2镄勪笁娆″姞2镄0娆★纴镓浠ュ氨涓1101銆
鍏杩涘埗涔熸槸杩欎箞绠楃殑锛屾瘆濡傝30灏辨槸8镄勪竴娆℃柟镄3鍊嶅姞8镄0娆$殑6鍊嶏纴灏辨槸36锛埚叓杩涘埗锛夛绂
鍗佸叚锻㈡槸1.2.3.4.5.6.7.8.9.10.A.B.C.D.E.F銆伞伞
A.B.C.D.E.F.瀵瑰簲镌11.12.13.14.15.16锛岀畻娉曟槸涓镙风殑銆伞备笉浼氩彲浠ュ湪闂鎴

‘叁’ C璇瑷杩涘埗杞鎹

璁$畻链轰腑甯哥敤镄勬暟镄勮繘鍒朵富瑕佹湁锛氢簩杩涘埗銆佸叓杩涘埗銆佸崄杩涘埗銆佸崄鍏杩涘埗銆  

2杩涘埗锛岀敤涓や釜阒挎媺浼鏁板瓧锛0銆1锛  

8杩涘埗锛岀敤鍏涓阒挎媺浼鏁板瓧锛0銆1銆2銆3銆4銆5銆6銆7锛  

10杩涘埗锛岀敤鍗佷釜阒挎媺浼鏁板瓧锛0鍒9锛  

16杩涘埗灏辨槸阃16杩1锛屼絾鎴戜滑鍙链0~9杩椤崄涓鏁板瓧锛屾墍浠ユ垜浠鐢ˋ锛孊锛孋锛娈锛孍锛孎杩欎簲涓瀛楁瘝𨱒ュ垎鍒琛ㄧず10锛11锛12锛13锛14锛15銆傚瓧姣崭笉鍖哄垎澶у皬鍐欍 

涓嬮溃鐢ㄤ綑鏁扮煭闄ゆ硶鎶婂崄杩涘埗鏁拌浆鍖栦负浜岃繘鍒舵暟涓轰緥杩涜岃存槑

1銆佹槑纭闂棰樸备妇涓渚嫔瓙锛屾垜浠鐜板湪鏄瑕佸皢涓涓鍗佽繘鍒舵暟瀛156杞鎹㈡垚浜岃繘鍒舵暟瀛椼傚厛灏呜繖涓鍗佽繘鍒舵暟浣滀负琚闄ゆ暟鍐椤湪涓涓鍊掔潃镄勨滈暱闄ゆ硶钬濈殑绗﹀彿閲屻傛妸鐩镙囨暟绯荤殑锘烘暟锛埚湪杩欓噷浜岃繘鍒舵槸钬2钬濓级浣滀负闄ゆ暟鍐椤湪杩欎釜闄ゆ硶绗﹀彿镄勫栭溃銆傜敤杩欎釜鏂规硶灏呜$畻杩囩▼鍙瑙嗗寲浼氭洿鏂逛究鐞呜В锛屽洜涓烘暣涓璁$畻杩囩▼鍙闇灏嗘暟瀛椾竴鐩撮櫎浠2銆

娲荤敤杩欎釜鏂规硶鍙浠ュ皢镓链夊崄杩涘埗鏁板瓧杞鎹㈡垚浠讳綍杩涘埗琛ㄨ揪銆傞櫎鏁颁负2鏄锲犱负鎴戜滑链缁堟兂寰楀埌镄勪互2涓哄熀鏁扮殑鏁帮纸鍗充簩杩涘埗鏁板硷级 銆傚傛灉链缁堟兂寰楀埌鍏朵粬鏁扮郴镄勬暟瀛楋纴鐢ㄧ洰镙囨暟绯荤殑锘烘暟浠f浛杩欎釜鏂规硶閲屼簩杩涘埗镄勫熀鏁2 灏卞彲浠ヤ简銆备緥濡傦纴瑕佸缑鍒板熀鏁颁负9镄勬暟锛屽氨鐢9𨱒ヤ唬镟2浣滀负闄ゆ暟 銆傛渶缁堢殑缁撴灉灏辨槸鐩镙囨暟绯荤殑鏁板瓧琛ㄨ揪銆

镓╁𪾢璧勬枡锛

鍗佽繘鍒--->浜岃繘鍒

瀵逛簬鏁存暟閮ㄥ垎锛岀敤琚闄ゆ暟鍙嶅嶉櫎浠2锛岄櫎绗涓娆″栵纴姣忔¢櫎浠2鍧囧彇鍓崭竴娆″晢镄勬暣鏁伴儴鍒嗕綔琚闄ゆ暟骞朵緷娆¤颁笅姣忔$殑浣欐暟銆傚彟澶栵纴镓寰楀埌镄勫晢镄勬渶钖庝竴浣崭綑鏁版槸镓姹备簩杩涘埗鏁扮殑链楂树綅銆

瀵逛簬灏忔暟閮ㄥ垎锛岄噰鐢ㄨ繛缁涔树互锘烘暟2锛屽苟渚濇″彇鍑虹殑鏁存暟閮ㄥ垎锛岀洿镊崇粨鏋灭殑灏忔暟閮ㄥ垎涓0涓烘銆傛晠璇ユ硶绉扳滀箻锘哄彇鏁存硶钬

鍗佽繘鍒--->鍏杩涘埗

10杩涘埗鏁拌浆鎹㈡垚8杩涘埗镄勬柟娉曪纴鍜岃浆鎹涓2杩涘埗镄勬柟娉旷被浼硷纴鍞涓鍙桦寲锛氶櫎鏁扮敱2鍙樻垚8銆

鍙傝冭祫鏂欙细锏惧害锏剧戋斺旇繘鍒惰浆鎹

‘肆’ C语言中八进制和16进制怎么表示

一、八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o),例如:

//合法的八进制数

int a = 015; //换算成十进制为 13

int b = -0101; //换算成十进制为 -65

int c = 0177777; //换算成十进制为 65535

//非法的八进制

int m = 256; //无前缀 0,相当于十进制

int n = 03A2; //A不是有效的八进制数字

二、十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,例如:

//合法的十六进制int a = 0X2A; //换算成十进制为 42

int b = -0XA0; //换算成十进制为 -160

int c = 0xffff; //换算成十进制为 65535

//非法的十六进制

int m = 5A; //没有前缀 0X,是一个无效数字

int n = 0X3H; //H不是有效的十六进制数字

二进制化为八进制

整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。

小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。

例:(11001111.01111)2 = (011 001 111.011 110)2 = (317.36)8

以上内容参考:网络-八进制

阅读全文

与c语言中各种进制的算法相关的资料

热点内容
实况为什么安卓看不了 浏览:127
Java多线程Queue 浏览:90
云服务器499元三年 浏览:974
nbd源码 浏览:844
x86在arm上编译 浏览:7
linux怎么配置网络 浏览:307
程序员想要的小礼物 浏览:186
java获取网页url 浏览:624
怎么做解压神器泡泡版 浏览:966
自己动手做一个c编译器 浏览:929
手机如何链接谷歌服务器地址 浏览:137
废掉一个程序员的武功 浏览:249
java树形算法 浏览:641
通达信加锁指标源码怎么看 浏览:754
将同名文件移动到部分同名文件夹 浏览:403
摆荡指标加压力线源码 浏览:915
新一代单片机特征 浏览:770
王者的服务器什么时候才修好 浏览:281
cad历史命令 浏览:41
php博客源代码 浏览:24