QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 735|回复: 5

位运算真是让人迷惑

[复制链接]
发表于 2005-1-4 21:39:41 | 显示全部楼层 |阅读模式
今天看到一段代码,通过位运算,很快捷的实现了十六进制数到四进制数的转换,可是我怎么也看不懂,位运算我一直都是糊里糊涂的,请知道的兄弟给我说一说这段转换程序的原理,多谢
[code:1]
main()
{
  int cmospass=0x8E;
  int n,temp;
  for (n=6; n>=0; n-=2)
  {
    temp = cmospass;
    temp >>= n;
    temp = temp & 0x03;
    printf("%d",temp);
  }
}
[/code:1]
输出结果为2032
发表于 2005-1-4 22:16:46 | 显示全部楼层
每位4进制数用2位二进制数表达。
0x8E就是10001110
从高二位开始temp >>=6就是取高得高二位10
temp >>=4,temp&0x03就是取次高二位,是00
依此类推
回复

使用道具 举报

发表于 2005-1-4 22:18:03 | 显示全部楼层
1位16进制数对应4位2进制数,1位4进制数对应2位2进制数。
[code:1] 2进制:10001110
4进制: 2 0 3 2
16进制:   8   E[/code:1]
电脑里边都是2进制,一次显示4位就是16进制,一次显示2位就是4进制了。这个程序也就是从最高那2位开始一次2位地显示,在咱们看来就是显示成4进制了。
回复

使用道具 举报

 楼主| 发表于 2005-1-5 08:28:10 | 显示全部楼层
了解,多谢mozilla和loveccy
回复

使用道具 举报

发表于 2005-1-5 17:14:38 | 显示全部楼层
请问4进制一般做什么用? 谢谢!
回复

使用道具 举报

 楼主| 发表于 2005-1-5 23:32:11 | 显示全部楼层
呵呵,我这段程序是显示cmos密码程序中的一段,从cmos中读出的数据是十六进制的,转换成四进制相当于解密
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 19:25 , Processed in 0.069584 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表