导航:首页 > 编程语言 > java16进制加减

java16进制加减

发布时间:2023-07-06 18:09:57

java中如何把十六进制转为十进制

分类: 电脑/网络 >> 程序设计 >> 其他编程伍亮语言
问题描述:

我用的java1.4 请问如何将十六进制整形数转化为十进制数橘冲的

解析:

import java.awt.*;

public class d2x extends Frame

{

int decimalValue= 0;

String baseXValue = new String("0");

TextField dDisplay,xDisplay;

d2x constructor

d2x()

{

super("Decimal Converter");set the title of the frame

MenuBar mb = new MenuBar();

Button d2Binary = new Button("Binary");

Button d2Octal = new Button("Octal");

Button d2Hex = new Button("Hex");

Button d2Base36 = new Button("Base36");

Panel p1 = new Panel();

Panel p2 = new Panel();

Panel p3 = new Panel();

add a simple menu

Menu m = new Menu("Application");

m.add(new CheckboxMenuItem("Base 36 Active"));

m.add(new MenuItem("Exit"));

add menu to menubar

mb.add(m);

setMenuBar(mb);install this menu bar in the frame

Add buttons to their own panel

p3.setLayout(new FlowLayout());

p3.add(d2Binary);

p3.add(d2Octal);

p3.add(d2Hex);

p3.add(d2Base36);

Add text fields

Label dLabel = new Label("Enter Deecimal: ");

Label xLabel = new Label("Converted Value: ");

dDisplay = new TextField(Integer.toString(decimalValue),7);

xDisplay = new TextField(baseXValue,32);

xDisplay.setEditable(false);

p1.setLayout(new FlowLayout(FlowLayout.LEFT));

p2.setLayout(new FlowLayout(FlowLayout.LEFT));

p1.add(dLabel);

p1.add(dDisplay);

p2.add(xLabel);

p2.add(xDisplay);

Add the panels

add("North",p1);

add("Center",p2);

add("South"薯歼,p3);

}end d2x constructor

public void start()

{

resize(400,150);

show();

}

public void updateXDisplay()

{

xDisplay.setText(baseXValue);

}

public boolean handleEvent(Event evt)

{

if (evt.target instanceof MenuItem)

{

if ("Exit".equals(((MenuItem)evt.target).getLabel()))

{

hide();

dispose();

System.exit(0);

return false;

}

return true;

}

else if(evt.target instanceof Button)

{

String whick = ((Button)evt.target).getLabel();

if (whick.equals("Binary"))

{

decimalValue = Integer.parseInt(dDisplay.getText());

baseXValue = Integer.toString(decimalValue,2);

}

if (whick.equals("Octal"))

{

decimalValue = Integer.parseInt(dDisplay.getText());

baseXValue = Integer.toString(decimalValue,8);

}

if (whick.equals("Hex"))

{

decimalValue = Integer.parseInt(dDisplay.getText());

baseXValue = Integer.toString(decimalValue,16);

}

if (whick.equals("36"))

{

decimalValue = Integer.parseInt(dDisplay.getText());

baseXValue = Integer.toString(decimalValue,36);

}

updateXDisplay();

return true;

}

return false;

}

public static void main(String args[])

{

d2x m = new d2x();

m.start();

}

}

⑵ JAVA 进制加减乘除的问题~ 急等!!

2、8、16进制的运算,目前sun还没有推出相关的内容。不过java提供了10进制转换成2、8、16进制的算法已经2、8、16进制转换成10进制的算法。
十进制转成十六进制:

Integer.toHexString(int i)

十进制转成八进制

Integer.toOctalString(int i)

十进制转成二进制

Integer.toBinaryString(int i)

十六进制转成十进制

Integer.valueOf("FFFF",16).toString()

八进制转成十进制

Integer.valueOf("876",8).toString()

二进制转十进制

Integer.valueOf("0101",2).toString()

你可以自己写一个2进制的算法。
有种方法可以比较简单实现。
1、例如x、y是输入的二进制的数
public static void main(String[] args){
String x = "101001";
String y = "100101";
int x1 = Integer.valueOf(x,2).toString();
int y1 = Integer.valueOf(y,2).toString();
int z = x1 + y1;
String result = Integer.toBinaryString(z);

System.out.println(result);
}

变量result就是二进制的结果了。

8、16进制的运行与上面的方法基本一致,稍微修改一下转换函数就可以了。

顺便提一句,8、16进制与2进制转换是简单了。8进制的一个数字对应2进制的3个数字,16进制的一个数字对应2进制的4个数字。
例如:8进制:数字457,将数字分开成4#5#7,对应的2进制 100#101#111

⑶ 关于java中16进制的问题

因为int 为带符号类型,带符号类型最高为是符号位,又因为0xFFFFFFFF,也就是四个字节32 bits全是1, 符号位是1,所以这个数是负数。

内存中的数值为补码表示,所以0xFFFFFFFF是一个负数的补码。负数从补码求原码,最高符号位不变,保持 1, 其余各位求反,末尾加1,也就是 0xFFFFFFFF,二进制为:11111111 11111111 11111111 11111111

-> 10000000 00000000 00000000 00000000
-> 10000000 00000000 00000000 00000001

原码首位表示符号位,其余位表示绝对值大小,所以,这个数是 -1
而0xFF转换为二进制为:00000000 0000000 00000000 11111111其高位为0,即为正数,正数的原码,反码,补码相同,所以值为255

⑷ JAVA进(JAVA程序关于八进制和16进制)

只向你讲解一下整数部分的转换规则。至于小数部分,则比较复杂。

先说非十进制转十进制,比较简单:
将数从右到左编号,最右边的编号是0,右边第二位编号为1,依此类推.
将给定数的各位值乘以进制的编号次方,再得到的结果相加即可.说起来不好理解,举个例子:

二进制:10101
编号: 43210
计算:1*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0
= 1 * 16 + 0*8 + 1*4 + 1*1 = 21(十进制)

十六进制:0xA9D3
编号:3210
计算:A*16^3 + 9*16^2 + D*16^1 + 3*16^0
=10*4096 + 9*256 + 13*16 + 3 = 43475(十进制)
不信可以用WINDOWS自带的计算器验证.(查看->科学型).

====

至于十进制转非十进制,比较麻烦,要用到 连续除法求余 的计算.

用给定的数除以进制(如8,16,2),将得到商和余数,再将商除以进制,又得到商和余数.一直除到商为0为止.
然后将 所有得到的余数 按照出现的 相反 的顺序排列起来,即得到结果.

举例:
124(十进制)转二进制,连续除以"2",运算如下:
被除数/进制 = 商……余数
124 /2 = 62……0
62 /2 = 31……0
31 /2 = 15……1
15 /2 = 7……1
7 /2 = 3……1
3 /2 = 1……1
1 / 2 = 0……1
将所有出现的余数从后向前排列,就得到最后结果为:1111100
同样,将其转为八进制:
124 /8 = 15……4
15 /8 = 1……7
1 /8 = 0……1
结果即为174(八进制).
同样可在计算器上试验一下.

⑸ java中求16进制异或和

publicclassTest{
publicStringa;

publicstaticvoidmain(String[]args){
int[]a=newint[]{(int)0X8A,(int)0X12,(int)0X05,
(int)0X07,(int)0XFE,(int)0XE3,(int)0X0A,
(int)0X06,(int)0X10,(int)0X14,(int)0X29};

intChkSum=0;
for(inti=0;i<2;i++){//a.length,只有在为2时结果为98,也就是说只验证了0X8A,0X12这2个数
ChkSum=(int)(ChkSum^a[i]);
}
System.out.println(Integer.toHexString(ChkSum)+"H");
}
}

N的输入我就不写了,自己给了一个固定值2,你把 i<2中的2替换成 输入值就好

阅读全文

与java16进制加减相关的资料

热点内容
遇见不安全网站怎么办 浏览:251
哪个app有庆余年电视剧 浏览:420
iphone5s视频时很黑 浏览:601
js获取端口号 浏览:347
手机短息发的链接病毒苹果手机 浏览:724
win10专业忘记家庭组密码 浏览:176
南宁applestore几楼 浏览:296
java字符串怎么初始化 浏览:349
医美哪个app好 浏览:768
代码编程和机器人编程哪个好 浏览:875
90版本男法 浏览:796
win10桌面字体难看 浏览:848
三菱fx5u支持哪些编程 浏览:7
优酷在文件夹在哪里 浏览:91
趣打印的数据文件是什么 浏览:871
linuxjava程序 浏览:483
苹果6splus数据线图片 浏览:98
苹果官网数据如何恢复 浏览:251
spss怎么拆分数据 浏览:306
photoshop复位所有工具 浏览:492

友情链接