java中怎样实现60多java mysq 64位整形形数字的运算

如何用JAVA编字一段程序,将字符串转换成INT(或DINT双整型) 整型数值?_百度知道
如何用JAVA编字一段程序,将字符串转换成INT(或DINT双整型) 整型数值?
寄存器STR01中存储的是一串纯数字的字符串(最大20位).如何用Java编字程序将这组字符串转换成整型(或双整型数据)并存储在D1寄存中.当STR01中数据变化时D1会跟随变化!并说明每行程序的含义!谢谢!
我有更好的答案
只有 TheLastPromit 靠谱点。。java不可能写出这样的程序。Java无法直接操作(读取或写入)寄存器。所以不可能用java实现你要的功能。===============PS:flyingFish211他说的dint应该相当于java里的long
采纳率:44%
来自团队:
Java 没有DINT类型, INT表示不了那么大的数字,所以无解
无所谓DINT,INT.只要不是不可运算的字符格式就行,位数不够,你分为多个数据也所谓啊.1-8位,9-16位,17-24位,25-32位,...........................N-N+8位,当然还不行,一位一个数据也能接受.目的只有一个,最终得出的结果是可进行+ - * / & & =算术运算的数据就行.
乘法,除法非常难实现。加法以前写过一个
..你确定你说的那是java程序吗??java里面是没有什么寄存器指针的
..经常和寄存器Cpu打交道的时汇编 ..C
.C++中也有寄存器
..但你又没代码
..所以无法解释
这样说吧,我所谓的寄存器(或不叫寄存器吧),是自定义的一个存储地址,不直接操作硬件.系统硬件把外部字进来的字符串存到一个系统地址假设为STR01吧.但因为是字符串没法运算.因些要转为数据格式.系统只支持java,及另外一种图形编程方式.
下面这段代码应该可以实现你要的功能吧 ..你说的那功能还真不怎么常见..我也是参考网上的代码写出来的 ..当然也有部分是copy来的 ,所以别介意哈,应该会对你有些帮助的吧 public class BigNumber { public static void main(String[] args) {
int a[] = new int[] { , , 1111 };
int b[] = new int[] { , , 1111 };
int c[] = new int[5];
BigNumber bigNumber = new BigNumber();
bigNumber.add(a, b, c);
// bigNumber.sub(a, b, c);
// bigNumber.mul(a, 5, c);
// bigNumber.div(a, 2, c);
for (int i = 0; i & c. i++) {
System.out.print(c[i] + &,&);
} } // 加法运算 public void add(int a[], int b[], int c[]) {
int m = a.
int k = c.
int carry = 0;
for (int i = m - 1; i &= 0; i--) {
c[--k] = a[i] + b[i] +
if (c[i] & 10000) {
carry = 1;
c[k] = c[k] - 10000;
carry = 0;
if (c.length & m && c[k] & 10000) {
c[k] = c[k] - 10000;
c[--k] = 1;
} } // 减法运算 public void sub(int a[], int b[], int c[]) {
int m = a.
int carry = 0;
for (int i = m - 1; i &= 0; i--) {
c[i] = a[i] - b[i] -
if (i & 0) {
if (c[i] & 0) {
carry = 1;
c[i] = c[i] + 10000;
carry = 0;
} } // 乘法运算 public void mul(int a[], int b, int c[]) {
int m = a.
int k = c.
int carry = 0;
int temp = 0;
for (int i = m - 1; i &= 0; i--) {
temp = a[i] * b +
carry = temp / 10000;
c[--k] = temp % 10000;
if (c.length & m && carry != 0) {
} } // 出发运算 public void div(int a[], int b, int c[]) {
int m = a.
int remain = 0;
for (int i = 0; i & i++) {
c[i] = (a[i] + remain) /
remain = a[i] % b * 10000;
路过,,,,你那是错的让人怎么说
你可以这样理解: 编程语言JAVA.编程功能:把一个由阿拉伯数字组成的字符串转换成可进行算术运算的数据.至于其它规则你自己看着办.
其他4条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。【Java编程】Java中的大整数计算
在上一篇文章中,我们实现了c语言中的大整数的运算,并且用Miller-Rabin算法实现了对大素数的测试。本来我准备用Java代码实现大整数的运算,查了一下资料发现Java中java.math的BigInteger可以实现大整数的表示和计算。BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
下面通过程序来看看具体用法:
import java.math.BigI
public class BigInt {
public static void main(String[] args) {
// TODO Auto-generated method stub
long x=654321L;
long y=999L;
System.out.println("x*y= "+(x*y));
BigInteger bigX= new BigInteger("654321");
BigInteger bigY= new BigInteger("999");
BigInteger bigXY=bigX.multiply(bigY);
System.out.println("bigXY= "+bigXY);
boolean flag=
BigInteger primenum=new BigInteger("");
flag=primenum.isProbablePrime(10);//参数10用于控制准确性
//如果该调用返回 true,则此 BigInteger 是素数的概率超出 (1 - 1/2^10)。此方法的执行时间与此参数的值是成比例的。
if(flag==true)
System.out.println(primenum+"可能是素数!");
System.out.println(primenum+"肯定不是素数");
}结果显示如下:
x*y= -4631217
可能是素数!
通过结果我们可以看到,两个长整数相乘的结果超出了long型数据64位的表示范围,截断后的结果出现了负值。通过使用大整数类BigInteger很好的解决了这个问题。我们在前一篇文章中找到了64位的最大的可能素数是 ,现在通过大整数类测试同样说明这个数是素数,这也间接说明前一篇算法实现的正确性。
返回此 BigInteger 最右端(最低位)1 比特的索引(即从此字节的右端开始到本字节中最右端 1 比特之间的 0 比特的位数)。int()
返回此 BigInteger 的哈希码。int() 将此 BigInteger 转换为 int。boolean(int
certainty) 如果此 BigInteger 可能为素数,则返回 true,如果它一定为合数,则返回 false。long() 将此
BigInteger 转换为 long。(
val) 返回此 BigInteger 和 val 的最大值。(
val) 返回此 BigInteger 和 val 的最小值。(
m) 返回其值为 (this mod m) 的 BigInteger。(
m) 返回其值为 (this-1 mod m) 的 BigInteger。(
m) 返回其值为 (thisexponent mod m) 的 BigInteger。(
val) 返回其值为 (this * val) 的 BigInteger。()
返回其值是 (-this) 的 BigInteger。()
返回大于此 BigInteger 的可能为素数的第一个整数。()
返回其值为 (~this) 的 BigInteger。(
val) 返回其值为 (this | val) 的 BigInteger。(int
exponent) 返回其值为 (thisexponent) 的 BigInteger。static (int
bitLength,
rnd) 返回有可能是素数的、具有指定长度的正 BigInteger。(
val) 返回其值为 (this % val) 的 BigInteger。(int
n) 返回其值与设置了指定位的此 BigInteger 等效的 BigInteger。(int
n) 返回其值为 (this && n) 的 BigInteger。(int
n) 返回其值为 (this && n) 的 BigInteger。int() 返回此 BigInteger 的正负号函数。(
val) 返回其值为 (this - val) 的 BigInteger。boolean(int n) 当且仅当设置了指定的位时,返回 true。byte[]()
返回一个 byte 数组,该数组包含此 BigInteger 的二进制补码表示形式。()
返回此 BigInteger 的十进制字符串表示形式。(int
radix) 返回此 BigInteger 的给定基数的字符串表示形式。static (long
val) 返回其值等于指定 long 的值的 BigInteger。(
val) 返回其值为 (this ^ val) 的 BigInteger。原文:作者:nineheadedbird
没有更多推荐了,
不良信息举报
举报内容:
【Java编程】Java中的大整数计算
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!在java中,两个超长整形数相加,已经超过了long 的存储范围,怎么计算它的值呢?_百度知道
在java中,两个超长整形数相加,已经超过了long 的存储范围,怎么计算它的值呢?
如(1) +4574617 = ?;
(2)6945 + 6 = ?
用BigDecimal类的话 怎么写这个这个程序
求完整版本。
如果不用BigDecimal,把相加的两个数转换成为String类型,然后通过Stri...
我有更好的答案
有BigDecimal的用法,也有我写的一个相加的方法,参考下。方法很多的还可以把分成若干个int段分段计算后再加到一起。import java.math.BigDpublic class Class1 {
public static void main(String[] args) {
Class1 c=new Class1();
BigDecimal bi1=new BigDecimal(&6945&);
BigDecimal bi2=new BigDecimal(&323&);
BigDecimal bi3=bi1.add(bi2);
System.out.println(c.add(&6945&,&323&));
System.out.println(bi3);
public String add(String a,String b){
if(a.length()&b.length()){
return adds(a.trim(),b.trim());
return adds(b.trim(),a.trim());
adds(String a,String b){
int tmp=0;
char[] nc=new char[a.length()];
for(int i=a.length()-1,j=i-(a.length()-b.length());i&=0;i--){
if(a.charAt(i)&47&&a.charAt(i)&58){
t=tmp+(int)a.charAt(i)-48;
throw new FormatException(a+&第&+(i+1)+&个字符不是数字&);
if(b.charAt(j)&47&&b.charAt(j)&58){
t=t+(int)b.charAt(j)-48;
throw new FormatException(b+&第&+(j+1)+&个字符不是数字&);
nc[i]=(char)(t%10+48);
if(tmp&0){
return tmp+new String(nc);
return new String(nc);
}}class FormatException extends RuntimeException {
public FormatException(String string) {
super(string);
采纳率:64%
BigInteger sum = new BigInteger(&6945&).add(new BigInteger(&6&));
计算的人只要知道最后的答案就行 所以你不一定要输出一个long型比如你只要按位数4574617作为一个数组
然后与123.。。467这个数组逐个相加然后进位 最后得到一个int型数组 再把数组逐个输出就行了
用数组的方式怎么解决?可以写个算法不?
用科学技算咯
其他1条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java输入整数如何利用左位移运算求出二进制_百度知道
java输入整数如何利用左位移运算求出二进制
我有更好的答案
&public&static&void&main(String[]&args)&{&&&&&&&&Scanner&scan&=&new&Scanner(System.in);&&&&&&&&System.out.println(&请输入一个整数:&);&&&&&&&&int&number&=&scan.nextInt();&&&&&&&&&&&&&&&&int&tmp&=&1&&(Integer.SIZE-1);&//用于计算的临时变量&&&&&&&&&&&&&&&&System.out.println();&&&&&&&&for(int&i=0;&i&Integer.SIZE-1;&i++)&{&&&&&&&&&&&&System.out.print((number&&(tmp&&&=1))&0?&1:0);&&&&&&&&}&&&&&&&&System.out.println();&&&&&&&&if(scan&!=&null)&{&&&&&&&&&&&&scan.close();&&&&&&&&}&&&&}
采纳率:79%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。没有更多推荐了,
不良信息举报
举报内容:
[Java]模拟实现大整数类
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 java 64位整形 的文章

 

随机推荐