求16进制之间的转化转化为10进制之间的转化的笔算方法 笔算方法

0x16进制_百度百科
现实生活中,我们最常见的数为十进制数,比如交通信号灯上的数字,电子表上的时间等。如果在这些地方你看到0xAA,就会感觉很奇怪。但是这样的数代表什么意思,为什么会有这样的数,它与十进制的数有什么关系以及它都有哪些应用呢。下面将带你了解一下十六进制数的秘密。
0x16进制基本概述
以0x开始的数据表示16进制,计算机中每位的权为16,即(16进制)10 = (10进制)1×16
备注:这里的0是数字0,不是字母O!
0x16进制为什么需要十六进制
编程中,我们常用的还是10进制……毕竟C/C++是高级语言。
int a = 100,b = 99;
不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。
但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:
面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。
用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?
2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。
0x16进制十六进制数转换成十进制数
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进制:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2 = 2560
第3位: 2 * 16^3 = 8192 +
-------------------------------------
直接计算就是:
5 * 16^0 + F * 16^1 + A * 16^2+2 * 16^3 = 10997[1]
(别忘了,在上面的计算中,A表示10,而F表示15)
0x16进制十六进制数的表达方法
如果不使用特殊的书写形式,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++并不把它当成一个负数。
0x16进制十六进制数在转义符中的使用
转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的 '?' 字符,可以有以下表达方式:
'?' //直接输入字符
'\77' //用八进制,此时可以省略开头的0
'\0x3F' //用十六进制
同样,这一小节只用于了解。除了空字符用八进制数 '\0' 表示以外,我们很少用后两种方法表示一个字符。
0x16进制十六进制数互相转换
二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。
我们也一样,只要学完这一小节,就能做到。
首先我们来看一个二进制数:1111,它是多少呢?
你可能还要这样计算:1 * 2 ^0+ 1 * 2^1 + 1 * 2^2+ 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。
然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为2= 8,然后依次是 2 = 4,=2, 2 = 1。
记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。
下面列出四位二进制数 xxxx 所有可能的值(中间略过部分)
仅4位的2进制数 快速计算方法 十进制值 十六进值
1111 = 8 + 4 + 2 + 1 = 15 F
1110 = 8 + 4 + 2 + 0 = 14 E
1101 = 8 + 4 + 0 + 1 = 13 D
1100 = 8 + 4 + 0 + 0 = 12 C
1011 = 8 + 0 + 2 + 1 = 11 B
1010 = 8 + 0 + 2 + 0 = 10 A
1001 = 8 + 0 + 0 + 1 = 9 9
0001 = 0 + 0 + 0 + 1 = 1 1
0000 = 0 + 0 + 0 + 0 = 0 0
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
如(上行为二制数,下面为对应的十六进制):
F D , A 5 , 9 B
反过来,当我们看到 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
June Jamrich Parsons,Dan Oja.计算机文化:机械工业出版社,2009求16进制计算方法如题,越详细越好
定义16进制即逢16进1,其中用A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12,13,14,15.故而有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16个大写字母16进制到十进制16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方.例:2AF5换算成10进制:用竖式计算:第0位:5 * 16^0 = 5第1位:F * 16^1 = 240第2位:A * 16^2= 2560第3位:2 * 16^3 = 8192 +-------------------------------------10997直接计算就是:5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 1099716进制到二进制由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换,即得所求:例:2AF5换算成2进制:第0位:(5)16 = (位:(F)16 = (位:(A) 16 = (位:(2) 16 = (0010) 2 -------------------------------------得:(2AF5)16=(0101)2从二进制转换成十六进制的简便方法例举16进制就有16个数,15,用二进制表示15的方法就是1111,从而可以推断出,16进制用2进制可以表现成,顾名思义,也就是每四个为一位.举例:0111101可以这样分:(最高位不够可用零代替),对照着二进制的表格, 128 64 32 16 8 4 2 1 (一般例举这么多就够了,如果有小数的话就继续往右边列举,如0.5 0.25 0.125 0.0625……) 128 64 32 16 8 4 2 10 0 1 1| 1 1 0 1左半边=2+1=3 右半边=8+4+1=13=D结果,0111101就可以换算成16进制的3D.
为您推荐:
其他类似问题
扫描下载二维码503: Service Unavailable
503: Service Unavailable
访问太频繁了,服务器要炸。求高手交下16进制计算方法,越详细越好_百度知道
求高手交下16进制计算方法,越详细越好
用B表示11,16进制可以用一个符号表示10,而是16进制:F=15,我们是这样转化的?就是A,9=9,与10进制不同,E=14,这样我们可以重复使用0-9这10个数字符号表示所有的数字了,不是一种自然现象,那么大于九的怎么表示呢,进制是人们规定的的,然而出于某些原因16进制和10进制是不同的,是什么呢,高一位的总是比低一位的大?我们就规定大于9的就进位,我们的网络封包不是10进制,这个就是10进制?例如如下的一个16进制F2E93(16)其中括号内16表示前面这个是16进制,3=3所以,C表示12,一直到用F表示15,2=2,那么怎么将16进制转换为我们熟悉的十进制呢,我们只用0-9表示所有数字
我有更好的答案
16进制和10进制是不同的,进制是人们规定的的,不是一种自然现象,我们只用0-9表示所有数字,那么大于九的怎么表示呢?我们就规定大于9的就进位,高一位的总是比低一位的大,这样我们可以重复使用0-9这10个数字符号表示所有的数字了,这个就是10进制,然而出于某些原因,我们的网络封包不是10进制,而是16进制,与10进制不同,16进制可以用一个符号表示10,是什么呢?就是A,用B表示11,C表示12,一直到用F表示15,那么怎么将16进制转换为我们熟悉的十进制呢?例如如下的一个16进制
F2E93(16)
其中括号内16表示前面这个是16进制,
我们是这样转化的:
F=15,2=2,E=14,9=9,3=3
F2E93(16)=15X164+2X163+14X162+ 9X161+ 3X160
结果是很大的,不计算了!呵呵,如果实在不是很...
先看一下我们所熟悉的十进制:++7=6*10?+2*10?+3*10?+8*10+7*1这样一看,就非常明显,“F2E93(16)=15 X +2 X + 14 X + 9 X 16 + 3”是一个错误结果,正确的应该是:
15*16?+2*16?+14*16?+9*16+3*1;在16进制中,从右向左,每位的名称或实质是:个位、16位、16的平方位、16的立方位、16的四次方位……。因此在转化为10进制的时候,就要用各位上的数字乘以16的相应次幂。
十进制转化为十六进制是除十六至除尽,将余数和商数,按时间顺序,慢得出的数放前面,先得出的数放后面。就是十六进制数。十六进制转化为十进制就是反过来了,十六进制的每一位乘以16就行了,比如个位乘以16的0次方'''第n位乘以16的n-1次方,然后将它们相加就行了!!
其他类似问题
为您推荐:
16进制的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁笔算16进制转化为10进制怎么算?_百度知道
笔算16进制转化为10进制怎么算?
我有更好的答案
//各位乘以权即即可,是a的权af12
/16^3表示16的3次方。=10*16^3+15*16^2+1*16+2
16进制:111对应10: 1 * 256 + 1 * 16 + 1会算了不?
每一位乘以相应的权值再相加
其他类似问题
为您推荐:
16进制的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 进制之间的转化 的文章

更多推荐

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

点击添加站长微信