十六进制数56转换成二进制转化为八进制数,八进制,十六进制,要祥细步骤,谢谢。。。

第六章二进制、八进制、十六进制;6.1为什么需要八进制和十六进制?;6.2二、八、十六进制数转换到十进制数;6.2.1二进制数转换为十进制数;6.2.2八进制数转换为十进制数;6.2.3八进制数的表达方法;6.2.4八进制数在转义符中的使用;6.2.5十六进制数转换成十进制数;6.2.6十六进制数的表达方法;6.2.7十六进制数在转义符中的使用;6.3十进制
第六章 二进制、八进制、十六进制
6.1 为什么需要八进制和十六进制?
6.2 二、八、十六进制数转换到十进制数
6.2.1 二进制数转换为十进制数
6.2.2 八进制数转换为十进制数
6.2.3 八进制数的表达方法
6.2.4 八进制数在转义符中的使用
6.2.5 十六进制数转换成十进制数
6.2.6 十六进制数的表达方法
6.2.7 十六进制数在转义符中的使用
6.3 十进制数转换到二、八、十六进制数
6.3.1 10进制数转换为2进制数
6.3.2 10进制数转换为8、16进制数
6.4 二、十六进制数互相转换
6.5 原码、反码、补码
6.6 通过调试查看变量的值
6.7 本章小结
这是一节“前不着村后不着店”的课。不同进制之间的转换纯粹是数学上的计算。不过,你不必担心会有么复杂,无非是乘或除的计算。
生活中其实很多地方的计数方法都多少有点不同进制的影子。
比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。
至于二进制??没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。
生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度??
6.1 为什么需要八进制和十六进制?
编程中,我们常用的还是10进制??必竟C/C++是高级语言。
int a = 100,b = 99;
不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。
但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是: 00 00
面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。
用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?
2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。
6.2 二、八、十六进制数转换到十进制数
6.2.1 二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方??
所以,设有一个二进制数:,转换为10进制为:
下面是竖式:
换算成 十进制
第0位 0 * 20
第1位 0 * 21
第2位 1 * 22
第3位 0 * 23
第4位 0 * 24
第5位 1 * 25
第6位 1 * 26
第7位 0 * 27
---------------------------
用横式计算为:
0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100
0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1 * 22 + 1 * 23 +
1 * 25 + 1 * 26 = 100
6.2.2 八进制数转换为十进制数
八进制就是逢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
6.2.3 八进制数的表达方法
C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或,那么它是八进制数还是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可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节的内容,大家仅仅了解就行。
6.2.5 十六进制数转换成十进制数
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制,用十六个阿拉伯数字??等等,阿拉伯人或说是印度人,只发明了10个数字啊?
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进制:
5 * 160 = 5
F * 161 = 240
A * 162 = 2560
2 * 163 = 8192
-------------------------------------
直接计算就是:
+ F * 161 + A * 162 + 2 * 163 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:
1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100
十六进制数的表达方法
如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。
C,C++规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O) 以下是一些用法示例:
int a = 0x100F;
int b = 0x70 +
至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,C/C++中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,C,C++并不把它当成一个负数。
6.2.7 十六进制数在转义符中的使用
转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的 '?' 字符,可以有以下表达方式:
'?'
//直接输入字符
'\77'
//用八进制,此时可以省略开头的0
'\0x3F' //用十六进制
同样,这一小节只用于了解。除了空字符用八进制数 '\0' 表示以外,我们很少用后两种方法表示一个字符。
6.3 十进制数转换到二、八、十六进制数
6.3.1 10进制数转换为2进制数
给你一个十进制,比如:6,如果将它转换成二进制数呢?
10进制数转换成二进制数,这是一个连续除2的过程:
把要转换的数,除以2,得到商和余数,
将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。
听起来有些糊涂?我们结合例子来说明。比如要转换6为二进制数。
“把要转换的数,除以2,得到商和余数”。
要转换的数是6, 6 ÷ 2,得到商是3,余数是0。 (不要告诉我你不会计算6÷3!)
“将商继续除以2,直到商为0??”
现在商是3,还不是0,所以继续除以2。
那就: 3 ÷ 2, 得到商是1,余数是1。
“将商继续除以2,直到商为0??”
现在商是1,还不是0,所以继续除以2。
那就: 1 ÷ 2, 得到商是0,余数是1 (拿笔纸算一下,1÷2是不是商0余1!)
“将商继续除以2,直到商为0??最后将所有余数倒序排列”
好极!现在商已经是0。
我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了!
6转换成二进制,结果是110。
把上面的一段改成用表格来表示,则为:
(在计算机中,÷用 / 来表示)
如果是在考试时,我们要画这样表还是有点费时间,所更常见的换算过程是使用下图的连除:
包含各类专业文献、专业论文、行业资料、应用写作文书、生活休闲娱乐、外语学习资料、中学教育、文学作品欣赏、高等教育、56二进制、八进制、十六进制转换等内容。 
 二进制、八进制、十六进制之间的转换详解_数学_自然科学_专业资料。二进制转十进制...二、十进制数转换为二进制数 十进制数转换为二进制数时, 由于整数和小数的...  二进制_八进制_十进制_十六进制之间的相互转换_设计/艺术_人文社科_专业资料。二进制,八进制,十进制,十六进制之间的相互转换和相关概念 二进制: 计算机只认识 0 ...  二进制、八进制、十进制、十六进制之间转换 一、 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除 2 取余法...  十进制、二进制、八进制、十六进制之间的换算规律_数学_自然科学_专业资料。◆十进制转二进制: 二进制是计算技术中广泛采用的一种数制。 二进制数据是用 0 和 ...  二进制,八进制,十进制,十六进制之间的相互转换和相关概念_IT/计算机_专业资料。二进制,八进制 十进制 二进制 八进制,十进制,十六进制之间的相互转换和相关概念 八...  二进制,八进制,十进制,十六进制之间的转换算法 一、 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除 2 取...  二进制、八进制、十进制、十六进制之间转换一、 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除 2 取余法,...  二进制、八进制、十进制与十六进制转换计算精华_电力/水利_工程科技_专业资料。二进制、八进制、十进制与十六进制 一、进制的概念在计算机语言中常用的进制有二进制...  三、八进制与二进制转换的问题 类似十六进制和二进制, 比如(10 110 111)2(注意,中间间隔是为了好看而分的,因为三位二进制对应一位八 进制,所以我就三位三位...yuanbin0710 的BLOG
用户名:yuanbin0710
文章数:37
评论数:194
访问量:975813
注册日期:
阅读量:5863
阅读量:12276
阅读量:399812
阅读量:1089862
51CTO推荐博文
文中有不对或者有不清楚的地方,请大家告诉我,谢谢!
&
二进制、八进制、十进制与十六进制
&
一、 进制的概念
在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。
&
对于进制,有两个基本的概念:基数和运算规则。
基数:基数是指一种进制中组成的基本数字,也就是不能再进行拆分的数字。二进制是0和1;八进制是0-7;十进制是0-9;十六进制是0-9+A-F(大小写均可)。也可以这样简单记忆,假设是n进制的话,基数就是【0,n-1】的数字,基数的个数和进制值相同,二进制有两个基数,十进制有十个基数,依次类推。
运算规则:运算规则就是进位或错位规则。例如对于二进制来说,该规则是“满二进一,借一当二”;对于十进制来说,该规则是“满十进一,借一当十”。其他进制也是这样。
&
二、 二、八、十、十六进制基数对照表
&
三、 二进制转化成其他进制
1. 二进制(Binary)――&八进制(Octal)
例子1:将二进制数(10010)2转化成八进制数。
(10010)2=(010 010)2=(2 2)8=(22)8
例子2:将二进制数(0.1010)2转化为八进制数。
(0.10101)2=(0. 101 010)2=(0. 5 2)8=(0.52)8
诀窍:因为每三位二进制数对应一位八进制数,所以,以小数点为界,整数位则将二进制数从右向左每3位一隔开,不足3位的在左边用0填补即可;小数位则将二进制数从左向右每3位一隔开,不足3位的在右边用0填补即可。
&
2. 二进制(Binary)――&十进制(Decimal)
例子1:将二进制数(10010)2转化成十进制数。
(10010)2=(1x24+0x23+0x22+1x21+0x20)10=(16+0+0+2+0)10=(18) 10
例子2:将二进制数(0.10101)2转化为十进制数。
(0.10101)2=(0+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(0+0.5+0.25+0.125+0.25)10=(0.96875)10
诀窍:以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0或1)乘以2的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0或1)乘以2的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。
&
3. 二进制(Binary)――&十六进制(Hex)
例子1:将二进制数(10010)2转化成十六进制数。
(10010)2=()2=(1 2)16=(12) 16
例子2:将二进制数(0.1010)2转化为十六进制数。
(0.10101)2=(0. )2=(0. A 8)16=(0.A8)16
诀窍:因为每四位二进制数对应一位十六进制数,所以,以小数点为界,整数位则将二进制数从右向左每4位一隔开,不足4位的在左边用0填补即可;小数位则将二进制数从左向右每4位一隔开,不足4位的在右边用0填补即可。
&
(10010)2=(22)8=(18) 10=(12)16
(0.10101)2=(0.52)8=(0.96875)10=(0.A8)16
&
四、 八进制转化成其他进制
1. 八进制(Octal)――&二进制(Binary)
例子1:将八进制数(751)8转换成二进制数。
(751)8=(7 5 1)8=(111 101 001)2=()2
例子2:将八进制数(0.16)8转换成二进制数。
(0.16)8=(0. 1 6)8=(0. 001 110)2=(0.00111)2
诀窍:八进制转换成二进制与二进制转换成八进制相反。
&
2. 八进制(Octal)――&十进制(Decimal)
例子1:将八进制数(751)8转换成十进制数。
(751)8=(7x82+5x81+1x80)10=(448+40+1)10=(489)10
例子2:将八进制数(0.16)8转换成十进制数。
(0.16)8=(0+1x8-1+6x8-2)10=(0+0.125+0.09375)10=(0.21875)10
诀窍:方法同二进制转换成十进制。以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0-7)乘以8的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0-7)乘以8的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。
&
3. 八进制(Octal)――&十六进制(Hex)
例子1:将八进制数(751)8转换成十六进制数。
(751)8=()2=(01)2=(1 E 9)16=(1E9)16
例子2:将八进制数(0.16)8转换成十六进制数。
(0.16)8=(0.00111)2=(0. )2=(0.38)16
诀窍:八进制直接转换成十六进制比较费力,因此,最好先将八进制转换成二进制,然后再转换成十六进制。
&
(751)8=()2=(489)10=(1E9)16
(0.16)8=(0.00111)2=(0.21875)10=(0.38)16
&
五、 十进制转化成其他进制
1. 十进制(Decimal)――&二进制(Binary)
例子1:将十进制数(93)10转换成二进制数。
93/2=46……….1
46/2=23……….0
23/2=11……….1
11/2=5…………1
5/2=2…………...1
2/2=1……………0
(93)10=(
例子2:将十进制数(0.3125)10转换成二进制数。
0.3125x2 = 0 . 625
0.625x2 = 1 .25
0.25x2 = 0 .5
0.5x2 = 1 .0
(0.3125)10=(0.0101)2
诀窍:以小数点为界,整数部分除以2,然后取每次得到的商和余数,用商继续和2相除,直到商小于2。然后把第一次得到的余数作为二进制的个位,第二次得到的余数作为二进制的十位,依次类推,最后一次得到的小于2的商作为二进制的最高位,这样由商+余数组成的数字就是转换后二进制的值(整数部分用除2取余法);小数部分则先乘2,然后获得运算结果的整数部分,将结果中的小数部分再次乘2,直到小数部分为零。然后把第一次得到的整数部分作为二进制小数的最高位,后续的整数部分依次作为低位,这样由各整数部分组成的数字就是转化后二进制小数的值(小数部分用乘2取整法)。需要说明的是,有些十进制小数无法准确的用二进制进行表达,所以转换时符合一定的精度即可,这也是为什么计算机的浮点数运算不准确的原因。
&
2. 十进制(Decimal)――&八进制(Octal)
例子1:将十进制数(93)10转换成八进制数。
93/8=11………….5
11/8=1……………3
(93)10=(135)8
例子2: 将十进制数(0.3125)10转换成八进制数。
0.3125x8 = 2 .5
0.5x8 = 4 .0
(0.3125)10=(0.24)8
诀窍:方法同十进制转化成二进制。以小数点为界,整数部分除以8,然后取每次得到的商和余数,用商继续和8相除,直到商小于8。然后把第一次得到的余数作为八进制的个位,第二次得到的余数作为八进制的十位,依次类推,最后一次得到的小于8的商作为八进制的最高位,这样由商+余数组成的数字就是转换后八进制的值(整数部分用除8取余法); 小数部分则先乘8,然后获得运算结果的整数部分,将结果中的小数部分再次乘8,直到小数部分为零。然后把第一次得到的整数部分作为八进制小数的最高位,后续的整数部分依次作为低位,这样由各整数部分组成的数字就是转化后八进制小数的值(小数部分用乘8取整法)。
&
3. 十进制(Decimal)――&十六进制(Hex)
例子1:将十进制数(93)10转换成十六进制数。
93/16=5……..13(D)
(93)10=(5D)16
例子2: 将十进制数(0.3125)10转换成十六进制数。
0.3125x16 = 5 .0
(0.3125)10=(0.5)16
诀窍:方法同十进制转化成二进制。以小数点为界,整数部分除以16,然后取每次得到的商和余数,用商继续和16相除,直到商小于16。然后把第一次得到的余数作为十六进制的个位,第二次得到的余数作为十六进制的十位,依次类推,最后一次得到的小于16的商作为十六进制的最高位,这样由商+余数组成的数字就是转换后十六进制的值(整数部分用除16取余法); 小数部分则先乘16,然后获得运算结果的整数部分,将结果中的小数部分再次乘16,直到小数部分为零。然后把第一次得到的整数部分作为十六进制小数的最高位,后续的整数部分依次作为低位,这样由各整数部分组成的数字就是转化后十六进制小数的值(小数部分用乘16取整法)。
&
(93)10=(=(135)8=(5D)16
(0.3125)10=(0.0101)2=(0.24)8=(0.5)16
&
六、 十六进制转换成其他进制
1. 十六进制(Hex)――&二进制(Binary)
例子1:将十六进制数(A7)16转换成二进制数。
(A7)16=(A 7)16=()2=(
例子2:将十六进制数(0.D4)16转换成二进制数。
(0.D4)16=(0. D 4)16=(0. )2=(0.
诀窍:十六进制转换成二进制与二进制转换成十六进制相反。
&
2. 十六进制(Hex)――&八进制(Octal)
例子1:将十六进制数(A7)16转换成八进制数。
(A7)16=(=(010 100 111)8=(247)8
例子2:将十六进制数(0.D4)16转换成八进制数。
(0.D4)16=(0.=(0. 110 101)8=(0.65)8
诀窍:十六进制直接转换成八进制比较费力,因此,最好先将十六进制转换成二进制,然后再转换成八进制。
&
3. 十六进制(Hex)――&十进制(Decimal)
例子1:将十六进制数(A7)16转换成十进制数。
(A7)16=(10x161+7x160)10=(160+7)10=(167)10
例子2:将十六进制数(0.D4)16转换成十进制数。
(0.D4)16=(0+13x16-1+4x16-2)10=(0+0.625)10=(0.
诀窍:方法同二进制转换成十进制。以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0-9,A-F)乘以16的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0-9,A-F)乘以16的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。
&
(A7)16=(=(247)8=(167)10
(0.D4)16=(0.=(0.65)8=(0.
&
七、 总结
1. 其他进制转十进制:将二进制数、八进制数、十六进制数的各位数字分别乘以各自基数的(N-1)次方,其相加之和便是相应的十进制数,这是按权相加法。
2. 十进制转其他进制:整数部分用除基取余法,小数部分用乘基取整法,然后将整数与小数部分拼接成一个数作为转换的最后结果。
3. 二进制转八进制:从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足。
4. 八进制转二进制:与二进制转八进制相反。
5. 二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,不足四位的用0补足。
6. 十六进制转二进制:与二进制转十六进制相反。
7. 八进制转十六进制:通常将八进制转换成二进制,然后通过二进制再转换成十六进制。
8. 十六进制转八进制:通常将十六进制转换成二进制,然后通过二进制再转换成八进制。
&
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
10:36:10 09:33:30 23:18:38 13:03:43 13:04:04 11:18:05 09:19:23 19:34:33}

我要回帖

更多关于 二进制转化为八进制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信