| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 922 人关注过本帖
标题:[求助]位移基础知识
取消只看楼主 加入收藏
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
 问题点数:0 回复次数:3 
[求助]位移基础知识

请用移位的方式打印出一个进制整数的十六进制形式。
提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位

本题目的:
如: int tmp = 100;
通过移位最后输出tmp的十六进制形式,即 64


谁能帮忙写个正确的这种操作? 谢谢!
---------------------------------------------------------
如:
public class Test
{
public static void main(String[] args)
{
int tmp=100;

while(这里应该怎么写循环条件)
{
tmp = (tmp>>4) & 0x0f; //这步是右移4位,然后与操作0x0f ,得到的是高4位是吗?
.............
................
}
}
}
-------------------------------------------------------------------------

搜索更多相关主题的帖子: 位移 基础 知识 
2007-02-01 21:54
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
以下是引用千里冰封在2007-2-1 22:19:26的发言:
[CODE]public static String getHexString(int number){
char[] hex={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
StringBuffer sb=new StringBuffer("0x");
int mask=0x0F;
for(int i=7;i>=0;i--){
int temp=number>>(i*4); //为什么要先移28次? 我知道一个int 占32位,一共移8次就可以转成16进制,为什么要先移28次?
temp=temp&mask; //还有这个与操作我比较糊涂,大概知道这样操作可以取上面的四位,可不明白原理
sb.append(hex[temp]);
}
return sb.toString();
}[/CODE]

利用移位可以用这种方法,挺方便的,看看行不行

代码结果是完全对的!但我还是不太明白位移的原理.
---------------------------------------------------------------------

int number = 100 ; 二进制:1100100 右移28次后不全是0了吗? 都是0怎么和0x0f与操作呀?
_______________________________________________


我在说's blog   http://www..cn
2007-02-01 22:37
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 

有点儿明白了...


我在说's blog   http://www..cn
2007-02-01 23:07
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
谢谢千里

我在说's blog   http://www..cn
2007-02-01 23:07
快速回复:[求助]位移基础知识
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017285 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved