网上科普有关“8进制转换成十进制的算法是怎么样的?”话题很是火热 ,小编也是针对8进制转换成十进制的算法是怎么样的?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您 。
1、先来看八进制如何转换成十进制。其方法与二进制转换成十进制差不多:按权相加法 ,即将八进制每位上的数乘以位权(如8,64,512….),然后将得出来的数再加在一起。如将72.45转换为十进制 。如图1所示:
2 、?整数部分,除8取余法 ,每次将整数部分除以8,余数为该位权上的数,商继续除以8 ,余数又为上一个位权上的数,然后以此类推一直下去,直到商为零,最后从最后一个余数向前排列就可以了 ,如图2所示:
3、再看小数部分,与转二进制相同,这里是乘八取整法 ,也就是说小数部分乘以8,然后取整数部分,再让剩下的小数部分再乘以8 ,再取整数部分,……以此类推,一直乘到小数部分为零为止。例如0.703125 ,如图3所示:
4、小数部分乘以8,如图4所示,根据位数要求进行“3舍4入 ”。
5 、这个是直接的方法 ,还有一个间接的方法捏?就是先把十进制转换为二进制,然后再由二进制转换为8进制,例如将十进制478.0245转为八进制 。先转为二进制为:(478.125)10=(111011110.001)2 二进制再转为八进制为:(111011110.001)2=(736.1)8
咱们用图来解释一下,如图5所示为转换为二进制的介绍:
6、然后再将二进制转换为八进制 ,还是再温习一下二进制数与八进制数的对照表吧,如图6所示:
7、对照图表将二进制转换为八进制后的结果如图7所示:
什么是8进制
1101)8=1*8^3+1*8^2+0*8^1+1*8^0=(41)10
(1101)16=1*16^3+1*16^2+0*16^1+1*16^0=(81)10
计算机中也常常采用八进制和十六进制来表示数值数据,为表示数值N ,分别有如下对应关系:
m-1
N = ∑ Di * 8i , Di 的取值为0到7
i = -k
例如 (7.44)8 = 7*80 + 4*8-1 + 4*8-2 = (7.5625)10 。
m-1
N = ∑ Di * 16i , Di 的取值为0到9和A到F
i = -k
例如 (1A.08) 16 = 1*161 + 10*160 + 8*16-2 = (26.03125)10 。
上述二式中所用符号的Di包含的基本符号分别限于0-7和0-9 、A-F ,各位的码权分别为8i和16i
八进制数采用 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 +
--------------------------
839
同样,我们也可以用横式直接计算:
7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
结果是 ,八进制数 1507 转换成十进制数为 839
6.2.3 八进制数的表达方法
C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670 ,那么它是八进制数还是10进制数,都有可能。
所以,C,C++规定,一个数如果要指明它采用八进制 ,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制 。这就是八进制数在C、C++中的表达方法。
由于C和C++都没有提供二进制数的表达方法 ,所以,这里所学的八进制是我们学习的,CtC++语言的数值表达的第二种进制法。
现在 ,对于同样一个数,比如是100,我们在代码中可以用平常的10进制表达 ,例如在变量初始化时:
int a = 100;
我们也可以这样写:
int a = 0144; //0144是八进制的100;一个10进制数如何转成8进制,我们后面会学到 。
千万记住,用八进制表达时,你不能少了最前的那个0。否则计算机会通通当成10进制。不过 ,有一个地方使用八进制数时,却不能使用加0,那就是我们前面学的用于表达字符的“转义符”表达法 。
6.2.4 八进制数在转义符中的使用
我们学过用一个转义符'\'加上一个特殊字母来表示某个字符的方法 ,如:'\n'表示换行(line),而'\t'表示Tab字符,'\''则表示单引号。今天我们又学习了一种使用转义符的方法:转义符'\'后面接一个八进制数 ,用于表示ASCII码等于该值的字符。
比如,查一下第5章中的ASCII码表,我们找到问号字符(?)的ASCII值是63 ,那么我们可以把它转换为八进值:77,然后用 '\77'来表示'?' 。由于是八进制,所以本应写成 '\077' ,但因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以这里的0可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,
关于“8进制转换成十进制的算法是怎么样的?”这个话题的介绍 ,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[诗蕾]投稿,不代表哔哔号立场,如若转载,请注明出处:https://www.ibb4.com/cshi/202512-1018.html
评论列表(4条)
我是哔哔号的签约作者“诗蕾”!
希望本篇文章《8进制转换成十进制的算法是怎么样的?》能对你有所帮助!
本站[哔哔号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育
本文概览:网上科普有关“8进制转换成十进制的算法是怎么样的?”话题很是火热,小编也是针对8进制转换成十进制的算法是怎么样的?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临...