-
十六进制转换为浮点型函数实现_两种方法,4个实例教你把十进制数成功转换为二、十六进制数...
2021-01-05 13:10:11K8000=H 1F40方法二:口诀::找大位,定高位,依次除权,取商用余当把一个十进制数转换为二,十六进制数时,首先找大位,定高位,这里大位和高位均指二,十六进制的位权值。大位和高位必须符合下面条件:大位>...今天给大家举例说说十进制数如何转换成二、十六进制数。
方法一:口诀:除N取余,逆序排列
例1:K 200=B?
K200=B 1100 1000
例2:K 8000=H?
K8000=H 1F40
方法二:口诀::找大位,定高位,依次除权,取商用余
当把一个十进制数转换为二,十六进制数时,首先找大位,定高位,这里大位和高位均指二,十六进制的位权值。大位和高位必须符合下面条件:
大位>十进制数>高位
定下高位后,从高位开始进行转换。下面我们用实例来对“依次除权,取商用余”进行说明。
例1:K 200=B?
首先,我们要写出二进制的位权表,如下表。
(大位) 256>200>128 (高位)
K200=B 1100 1000
例2:K 8000=H?
(大位) 65536>8000>4096 (高位)
K8000=H 1F40
必须注意,如果除以权值后商如果大于9,必须用十六进制数A,B,C,D,E,F表示。
往期优秀文章回顾:
学PLC前要准备什么?为什么你的PLC水平总是一般般?
-
什么是十六进制法_十六进制的定义 十六进制的转换介绍【详解】
2020-12-30 14:44:06什么是十六进制?十六进制怎么转换?十六进制的定义16进制即逢16进1,其中用A,B,C,D,E,F(字母不区分大小写)...十六进制的转换16进制到十进制16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的...什么是十六进制?十六进制怎么转换?
十六进制的定义
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 = 10997
16进制到二进制
由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换,即得所求:
例:2AF5换算成2进制:
第0位: (5)16 = (0101) 2
第1位: (F)16 = (1111) 2
第2位: (A) 16 = (1010) 2
第3位: (2) 16 = (0010) 2 -------------------------------------
得:(2AF5)16=(0010101011110101)2
从二进制转换成十六进制的简便方法例举
16进制就有16个数,0~15,用二进制表示15的方法就是1111,从而可以推断出,16进制用2进制可以表现成0000~1111,顾名思义,也就是每四个为一位。举例:
0111101可以这样分:
0011|1101(最高位不够可用零代替),对照着二进制的表格,1024 512 256 128 64 32 16 8 4 2 1 (一般例举这么多就够了,如果有小数的话就继续往右边列举,如0.5 0.25 0.125 0.0625……)
1024 512 256 128 64 32 16 8 4 2 1
0 0 1 1
| 1 1 0 1
左半边=2+1=3 右半边=8+4+1=13=D
结果,0111101就可以换算成16进制的3D。
-
八、十六进制数转换到十进制数
2007-09-04 13:28:00二、八、十六进制数转换到十进制数关键词: 二、八、十六进制数转换到十进制 6.2.1 二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10...二、八、十六进制数转换到十进制数
关键词: 二、八、十六进制数转换到十进制6.2.1 二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:0110 0100,转换为10进制为:
下面是竖式:
0110 0100 换算成 十进制
第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 +
---------------------------
100
用横式计算为:
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 +
--------------------------
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可以不写。
事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,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进制:
第0位: 5 * 160 = 5
第1位: F * 161 = 240
第2位: A * 162 = 2560
第3位: 2 * 163 = 8192 +
-------------------------------------
10997
直接计算就是:
5 * 160 + F * 161 + A * 162 +2 * 163 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:
1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100
6.2.6 十六进制数的表达方法
如果不使用特殊的书写形式,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 + a;
至此,我们学完了所有进制: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。
把上面的一段改成用表格来表示,则为:
被除数 计算过程 商 余数 6 6/2 3 0 3 3/2 1 1 1 1/2 0 1 (在计算机中,÷用 / 来表示)
如果是在考试时,我们要画这样表还是有点费时间,所更常见的换算过程是使用下图的连除:
(图:1)
请大家对照图,表,及文字说明,并且自已拿笔计算一遍如何将6转换为二进制数。
说了半天,我们的转换结果对吗?二进制数110是6吗?你已经学会如何将二进制数转换成10进制数了,所以请现在就计算一下110换成10进制是否就是6。
6.3.2 10进制数转换为8、16进制数
非常开心,10进制数转换成8进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成8。
来看一个例子,如何将十进制数120转换成八进制数。
用表格表示:
被除数 计算过程 商 余数 120 120/8 15 0 15 15/8 1 7 1 1/8 0 1 120转换为8进制,结果为:170。
非常非常开心,10进制数转换成16进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成16。
同样是120,转换成16进制则为:
被除数 计算过程 商 余数 120 120/16 7 8 7 7/16 0 7 120转换为16进制,结果为:78。
请拿笔纸,采用(图:1)的形式,演算上面两个表的过程。
6.4 二、十六进制数互相转换
二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个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位的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 + 4 + 0 + 1 = 11 B
1010 = 8 + 0 + 2 + 0 = 10 A
1001 = 8 + 0 + 0 + 1 = 10 9
....
0001 = 0 + 0 + 0 + 1 = 1 1
0000 = 0 + 0 + 0 + 0 = 0 0
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
如(上行为二制数,下面为对应的十六进制):
1111 1101 , 1010 0101 , 1001 1011
F D , A 5 , 9 B
反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?
先转换F:
看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
接着转换 D:
看到D,知道它是13,13如何用8421凑呢?应该是:8 + 2 + 1,即:1011。
所以,FD转换为二进制数,为: 1111 1011
由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:
被除数 计算过程 商 余数 1234 1234/16 77 2 77 77/16 4 13 (D) 4 4/16 0 4 结果16进制为: 0x4D2
然后我们可直接写出0x4D2的二进制形式: 0100 1011 0010。
其中对映关系为:
0100 -- 4
1011 -- D
0010 -- 2
同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。
下面举例一个int类型的二进制数:
01101101 11100101 10101111 00011011
我们按四位一组转换为16进制: 6D E5 AF 1B
-
二进制和十六进制
2015-01-15 22:55:56十进制: 权值:各位表示10的幂(1、10、100、1000……) 二进制: 权值:各位表示2的幂(1、2、4、8、16、32……) 十六进制: 权值:各位表示16的幂(1、16、256……) ...十六进制与二进制的联系: 四位二进十进制:
权值:各位表示10的幂(1、10、100、1000……)
二进制:
权值:各位表示2的幂(1、2、4、8、16、32……)
十六进制:
权值:各位表示16的幂(1、16、256……)
二进制转十进制和十六进制转十进制:
各权值*该位的数字相加起来
十进制转二进制和十进制转十六进制(原理都是逆序排序):
逆序排序法:十六进制与二进制的联系:
四位二进制可以用一位十六进制来表示 -
用C++实现十进制转二进制或者十进制转十六进制
2014-12-20 11:17:43例3:用C++实现十进制转二进制或者十进制转十六进制 【分析】数字的值由两部分组成:数字和位权值。二进制就是位权值为2的幂函数,...//将一个十进制数转换为二进制数或者十六进制数 #include using namespace std; -
二,八,十六进制数转换为十进制数
2009-12-02 18:42:00二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10进制为:下面是竖式: 0110 0100 换算成 十进制 第0位 0 * 20 = 0第1位 0 * 21 = 0... -
java实现十六进制转十进制
2019-06-16 22:29:59基本思路:用十六进制中每一位数乘以对应的权值,再求和就是对应的十进制 方法一: /** * @param: [content] * @return: int * @description: 十六进制转十进制 */ public static int covert(String content){ ... -
二进制、八进制、十进制、十六进制之间的互相转换_20200711
2020-07-12 16:27:47任何进制转换十进制都能按照权值展开计算,二进制的权值为2的n-1次方,n是当前位数,十六进制为16的n-1次方,依此类推,小数部分为2的-n次方,n是小数的位数,展开的时候从左向右,整数部分是从右向左 1010B = 1 * ... -
蓝桥杯 基础练习 十六进制转十进制
2020-01-13 10:41:01问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。...十六进制数的位权为16. 代码如下: #inclu... -
十六进制转十进制 - C
2019-09-30 21:11:04我们经常碰到16进制数转10进制的情况,使用下面的C程序即可完成上述工作。 那么他是怎样的工作原理呢? 6.2.5 十六进制数转换成十进制数 ...十六进制数的第0位的权值为16的0次方,第1位的权... -
蓝桥杯基础练习 十六进制转十进制
2020-02-26 09:09:13注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 分析:用字符数组来操作,乘于权值,十六进制最高到八位int范围,所以要用long long类型 #include<i... -
试题 基础练习 十六进制转十进制
2020-03-05 17:52:30问题描述 从键盘输入一个不超过8位的正的...思路:16进制就是逢16进1,16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 我这里采用的是字典的方法,键与值一一对应。 n = ... -
二进制 八进制 十进制 十六进制 相互转化法
2021-01-26 15:54:31计算三个二进制数的和就是八进制数中的一位。 如下: 101110111001转成八进制:从右边开始分。 101 110 111 001三位二进制相加得到的结果: 5 6 7 1 101110111001转成八进制的结果为:5671 二进制转十进制... -
蓝桥杯BASIC-11 十六进制转十进制
2019-01-07 15:23:10注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 自己理解:十六转十,十六进制的第0位权值为16的0次方,第一位权值为16 的1次方,第2位为16的2次方…所以... -
将十六进制转化为十进制
2020-01-24 22:01:58输入一个十六进制的数字,将它转化为十进制的数字 十六进制定义: 十六进制转换有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D...16进制数的第0位的权值为16的0次方,第1位的权值为1... -
二进制、八进制、十六进制之间的转换
2018-08-09 11:52:46十进制---->二进制 : 待转换十进制数依次除2取余,所得余数序列反转即为所求。 二进制----->十进制: 按位与权值相乘求和。(1,2,4,16....八进制: 待转换十进制数依次除8取余,所得...十六进制:待转... -
蓝桥杯题解-十六进制转十进制-BASIC-11
2019-01-06 23:17:28注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 解: 1.按位乘以对应的权值,并相加。 2.一个字符一个字符获取,可用string,也方便像数组一样使用下标。... -
十六进制与十进制的转换
2014-03-11 15:37:22十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。... -
二进制,八进制,十进制,十六进制的转换
2011-07-21 15:00:20[b]6.2 二、八、十六进制数转换到十进制数[/b] 6.2.1 二进制数转换为十进制数 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式:... -
二进制 八进制 十进制 十六进制
2017-06-13 17:45:11二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:101100100,转换为10进制为:356 用横式计算 0×20+0×21+1×22+0×23+0×24+1×25+1×26+0×27+1×28=356 0乘以多少都是0... -
十六进制转换
2010-08-28 11:01:00十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X *... -
二进制,八进制,十进制,十六进制之间的转化
2019-07-15 14:53:271、十进制–>二进制 除以2取余数,如果能整除则为0,...二进制数从低位到高位(即从右往左)计算,位次乘以2的幂数,第1位的权值是2的0次方,第2位的权值是2的1次方, 110 从右往左 0*2(0)+1*2(1)+1*2(2)=0+2+4... -
二进制,八进制,十六进制
2008-06-04 09:29:006.2 二、八、十六进制数转换到十进制数6.2.1 二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10进制为:下面是竖式: 0110 0100 换算... -
彻底弄明白十六进制
2012-06-26 10:50:29十六进制举例说明 10进制的32表示... 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:101100100,转换为10进制为:356 用横式计算 0 X2^0 + 0X 2^1 + 1X 2^2 + 0 -
十六进制怎么转换成十进制
2017-10-23 11:14:00一个数的每一位都有一个权值,例如十进制数2039它可以表示为:2*10^3+0*10^2+3*10^1+9*10^0那么任何进制的数都一样,例如16进制数8A30E它就是8*16^4+10*16^3+3*16^2+0*16^1+14*16^0=566030,算出来的值就是这个数对应的... -
python之详解各种进制转换(二,八,十,十六进制间转换)
2020-06-09 21:20:33进制转换1、原理2、(二,八,十六进制)转十进制3、十进制 转换为(二,八,十六进制)4、其他5、python实现二进制与整型之间的转换5.1 整型转换二进制5.2 二进制转整型 1、原理 进制转换是人们利用符号来计数的... -
十进制二进制 八进制 十六进制
2008-01-09 12:55:00基本知识 十进制 基数为10,逢10进1。在十进制中,一共使用10个不同...八进制使用8种不同的符号,它们与二进制的转换关系为: 0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111 十六进制 基数为16,逢16进1。