将 biginteger 用于有关虚拟地址的 java 程序
using biginteger for java program regarding virtual addresses
也许由于我对 biginteger 的有限使用而造成误解,但我有一个程序需要获取用户输入的页面大小和虚拟地址并计算偏移量和虚拟页面。我可以毫无问题地进行计算,但是在比较输入的 itegers 时,虚拟地址的必要值 (4294967295) 超出范围。我试图将此数字声明为大整数,但相同的运算符似乎不起作用。我是否必须忘记零并找到一种方法来说明输入小于或等于这个数字?这是代码:
public class VAddress {
public static void main(String args[]){
BigInteger max = new BigInteger("4294967295");
Scanner PAGEinput = new Scanner(System.in);
Scanner ADDinput = new Scanner(System.in);
System.out.println("Please Enter the system page size (between 512 and 16384):");
int page = PAGEinput.nextInt();
System.out.println("Please Enter the Virtual Address: ");
int address = ADDinput.nextInt();
if(page >= 512 && page <= 16384){
if( address >= 0 && address <= max){
}
}
}
}
您还需要将整数 address
转换为 BigInteger,以便您可以将其与最大值进行比较,请参阅 this question
BigInteger address = new BigInteger(address);
if(page >= 512 && page <= 16384){
if(address.compareTo(new BigInteger("0"))>=0 && address.compareTo(max)<=0){
}
}
也许由于我对 biginteger 的有限使用而造成误解,但我有一个程序需要获取用户输入的页面大小和虚拟地址并计算偏移量和虚拟页面。我可以毫无问题地进行计算,但是在比较输入的 itegers 时,虚拟地址的必要值 (4294967295) 超出范围。我试图将此数字声明为大整数,但相同的运算符似乎不起作用。我是否必须忘记零并找到一种方法来说明输入小于或等于这个数字?这是代码:
public class VAddress {
public static void main(String args[]){
BigInteger max = new BigInteger("4294967295");
Scanner PAGEinput = new Scanner(System.in);
Scanner ADDinput = new Scanner(System.in);
System.out.println("Please Enter the system page size (between 512 and 16384):");
int page = PAGEinput.nextInt();
System.out.println("Please Enter the Virtual Address: ");
int address = ADDinput.nextInt();
if(page >= 512 && page <= 16384){
if( address >= 0 && address <= max){
}
}
}
}
您还需要将整数 address
转换为 BigInteger,以便您可以将其与最大值进行比较,请参阅 this question
BigInteger address = new BigInteger(address);
if(page >= 512 && page <= 16384){
if(address.compareTo(new BigInteger("0"))>=0 && address.compareTo(max)<=0){
}
}