十六进制和BCD码的那些事(终结篇)
来源:互联网 发布:淘宝店铺活动封面 编辑:程序博客网 时间:2024/06/05 10:04
十六进制转为BCD码好理解,有问题的是BCD码转为十六进制数;
Hex2Bcd:
0x3F的BCD码是多少?正确答案:99,或者0x63
0x3F=63,再加0x,->0x63, 再把0x63转为99(0x63=99)
1、如果要表示为十六进制,则转换为10进制数,前面加0x符号;(十六进制表示)
2、如果要表示为十进制,则先转换为10进制数,前面加0x符号,再把加上符号的
十六进制数转为十进制数;(十进制表示)
如果一个数为0x38,则BCD码为86
Bcd2Hex:(注:)
1、如果这个数是16进制表示的,把0x符号去掉,当成10进制数直接转换为16进制数即可;
(前提是这个16进制表示的数的任何一位不能大于9,也就是说不能出现A、B、C、D、E、F)
如:0x999,去掉0x,->999,再转为十六进制数为0x3E7
2、如果这个数是十进制表示的,先把这个数转换为16进制数,再把0x符号去掉,当成
十进制数,再转化为十六进制数即可;(注:这个数要在一定范围内,才行,如999转换为
十六进制为0x3E7,把0x去掉,3E7不在10进制表示范围内,)
上面说的是在一定范围内的数,对于不在一定范围内的数怎么转?刚开始还真不好理解,
是因为学校教给我们的数学规则限制了我们的思维,对于一个数3E7,当成10进制怎么理解?
还是按十进制来,个位、十位、百位...,只不过现在十位上的数是14,
BCD码999转换为十六进制是多少?正确答案:447,若者0x1BF,为什么?想不通...
转换过程:
999转为十六进制,->0x3E7,
3
3*10+E=44
(3*10+E)*10+7
=447
也就相当于0x3E7当成10进制理解,则是3*100+E*10+7,简单不?
注:一个十六进制数转为BCD码,但这个BCD码再转为十六进制数,不等于这个数;
如:如果一个数为0x999,Hex2Bcd(0x999)=0x2547(9543),Bcd2Hex(0x2547)=0x9F3(2547)
而一个BCD码的数可以转为十六进制数,这个十六进制数可以反转为BCD码,可能等于这个
数(这个数是十六进制表示,且每一位的数字在0~9之间);也可能不等于这个数;
如:Bcd2Hex(0x999)=0x3E7(999),Hex2Bcd(0x3E7)=2457(0x999)(等于)
Bcd2Hex(0x9F3)=0x41D(1053),Hex2Bcd(0x41D)=0x1053(4179)
Bcd2Hex(999)=0x1BF(447),Hex2Bcd(0x1BF)=0x447(1095)(不等于)
Bcd2Hex(0x447)=0x1BF(447),Hex2Bcd(0x1BF)=0x447(1095)(等于)
结论:16进制转BCD不可逆,BCD转16进制有可能可逆。
Hex2Bcd:
0x3F的BCD码是多少?正确答案:99,或者0x63
0x3F=63,再加0x,->0x63, 再把0x63转为99(0x63=99)
1、如果要表示为十六进制,则转换为10进制数,前面加0x符号;(十六进制表示)
2、如果要表示为十进制,则先转换为10进制数,前面加0x符号,再把加上符号的
十六进制数转为十进制数;(十进制表示)
如果一个数为0x38,则BCD码为86
Bcd2Hex:(注:)
1、如果这个数是16进制表示的,把0x符号去掉,当成10进制数直接转换为16进制数即可;
(前提是这个16进制表示的数的任何一位不能大于9,也就是说不能出现A、B、C、D、E、F)
如:0x999,去掉0x,->999,再转为十六进制数为0x3E7
2、如果这个数是十进制表示的,先把这个数转换为16进制数,再把0x符号去掉,当成
十进制数,再转化为十六进制数即可;(注:这个数要在一定范围内,才行,如999转换为
十六进制为0x3E7,把0x去掉,3E7不在10进制表示范围内,)
上面说的是在一定范围内的数,对于不在一定范围内的数怎么转?刚开始还真不好理解,
是因为学校教给我们的数学规则限制了我们的思维,对于一个数3E7,当成10进制怎么理解?
还是按十进制来,个位、十位、百位...,只不过现在十位上的数是14,
BCD码999转换为十六进制是多少?正确答案:447,若者0x1BF,为什么?想不通...
转换过程:
999转为十六进制,->0x3E7,
3
3*10+E=44
(3*10+E)*10+7
=447
也就相当于0x3E7当成10进制理解,则是3*100+E*10+7,简单不?
注:一个十六进制数转为BCD码,但这个BCD码再转为十六进制数,不等于这个数;
如:如果一个数为0x999,Hex2Bcd(0x999)=0x2547(9543),Bcd2Hex(0x2547)=0x9F3(2547)
而一个BCD码的数可以转为十六进制数,这个十六进制数可以反转为BCD码,可能等于这个
数(这个数是十六进制表示,且每一位的数字在0~9之间);也可能不等于这个数;
如:Bcd2Hex(0x999)=0x3E7(999),Hex2Bcd(0x3E7)=2457(0x999)(等于)
Bcd2Hex(0x9F3)=0x41D(1053),Hex2Bcd(0x41D)=0x1053(4179)
Bcd2Hex(999)=0x1BF(447),Hex2Bcd(0x1BF)=0x447(1095)(不等于)
Bcd2Hex(0x447)=0x1BF(447),Hex2Bcd(0x1BF)=0x447(1095)(等于)
结论:16进制转BCD不可逆,BCD转16进制有可能可逆。
- 十六进制和BCD码的那些事(终结篇)
- 十六进制、BCD码和十进制的转换
- 十六进制与BCD码的相互转换
- c++ 十进制、十六进制和BCD的相互转换
- c 十进制、十六进制和BCD的相互转换
- 十六进制转换为BCD码
- 十六进制、BCD码与十进制之间的转换
- 压缩BCD码和非压缩BCD码的区别
- 比较好的十六进制转BCD代码
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- BCD码、十六进制与十进制互转
- 扎金花概率详解
- ARM字寻址理解
- C++Socket编程总结
- hibernate 面试笔试题总结
- log4j配置祥解
- 十六进制和BCD码的那些事(终结篇)
- 英雄难觅用武之地 直贴行收票额度或较往年缩水
- selenium web的自动化测试工具
- expect脚本
- Java中遍历一个文件夹下所有文件及目录的操作
- Excel转PDF
- Bulk Insert命令详细
- (转)SQL树形数据的处理1
- eclipse rcp 打包出适合不同操作系统和操作位数.