JAVA大神帮我看看这段小程序; 10进制数转换成16进制数;为什么部分结果正确,部分错误?
/*把一个十进制数用16进制的形式打印结果为什么一部分正确一部分错误呢?*/classDemo{publicstaticvoidmain(Stringarg[]){int...
/*
把一个十进制数用16进制的形式打印
结果为什么一部分正确 一部分错误呢?
*/
class Demo
{
public static void main(String arg[])
{
int i = 256 ;
print(i+"=0x");
if(((i>>8)&15)>9)
print((char)(55+(i>>8)&15));
else
print((i>>8)&15);
if(((i>>4)&15)>9)
print((char)(55+(i>>4)&15));
else
print((i>>4)&15);
if((i&15)>9)
print((char)(55+(i&15)));
else
print(i&15);
}
public static void print(Object obj)
{
System.out.print(obj);
}
} 展开
把一个十进制数用16进制的形式打印
结果为什么一部分正确 一部分错误呢?
*/
class Demo
{
public static void main(String arg[])
{
int i = 256 ;
print(i+"=0x");
if(((i>>8)&15)>9)
print((char)(55+(i>>8)&15));
else
print((i>>8)&15);
if(((i>>4)&15)>9)
print((char)(55+(i>>4)&15));
else
print((i>>4)&15);
if((i&15)>9)
print((char)(55+(i&15)));
else
print(i&15);
}
public static void print(Object obj)
{
System.out.print(obj);
}
} 展开
5个回答
展开全部
主要是运算符的优先级。
你那个 print((char)(55+(i>>8)&15));
中的55+(i>>8)&15
会优先计算55+(i>>8),然后再and 15。
加个括号就没事了。
你那个 print((char)(55+(i>>8)&15));
中的55+(i>>8)&15
会优先计算55+(i>>8),然后再and 15。
加个括号就没事了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.Scanner;
public class Hex {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
System.out.println("0x"+Integer.toHexString(number));
}
}
不太清楚楼主进制转换的思路,应该是位运算使得结果太大,超出了char的取值范围导致的。其实java自带有进制转换的方法可以用的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
转16进制显示 ,还是需要查表法去做
数字字符和字母字符之间的值不是连续的
数字字符和字母字符之间的值不是连续的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主函数的类名前没加public
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询