两个字符串
String s1="11101001010100100101001011010010101111"[十进制度超过30位]
String s2="10001001010111111111001011010010101010"
java的
int型范围是-2147483648~2147483647(二进制有32位)
long型范围是-9223372036854775808~9223372036854775807[十进制20位左右](二进制有64位)请问:
在java里有办法使s1和s2分别转换为二进制的
11101001010100100101001011010010101111和
10001001010111111111001011010010101010,然后进行按位与(|)运算吗?有谁能帮帮我啊...
String s1="11101001010100100101001011010010101111"[十进制度超过30位]
String s2="10001001010111111111001011010010101010"
java的
int型范围是-2147483648~2147483647(二进制有32位)
long型范围是-9223372036854775808~9223372036854775807[十进制20位左右](二进制有64位)请问:
在java里有办法使s1和s2分别转换为二进制的
11101001010100100101001011010010101111和
10001001010111111111001011010010101010,然后进行按位与(|)运算吗?有谁能帮帮我啊...
解决方案 »
- lodop 直接打印 页脚文字能否去掉
- 急!!!JB连sqlserver时出现下列问题,高手指点啊!!!!!!!!!!!!!!!!!!!!!!!!
- 请教了!怎样获取数据集里的列值??
- 老问题,关于读数据库的汉字数据在浏览器上显示问号的问题
- session漏洞:知道别人的sessionid就能强制访问需登录的页面
- 关于tomcat5.5.20的问题
- 问一个简单地
- 请问那为小虾有JSP和JavaBean写的邮件收发系统?
- 关于javaBeans和EJB的区别的问题? ??
- 新手”求救“ 账号密码相同,登陆成功跳转界面。不相同,登录失败,不跳转界面。已有代码求改正。
- 求救!谢谢大家
- 在设计网站时的权限管理 是通过什么思路来实现的,在数据库里怎么设计的?能给个思路吗?谢谢了
/**
* 取两长二进制数位与
* @param s1
* @param s2
* @return
* @author seany
*/
public String getResult(String s1, String s2)
{
if(s1 == null || s2 == null)
return ""; //字符串为空
if(!s1.matches("[01]*") || !s2.matches("[01]*"))
return "0"; //字符串有非01字符
int max = s1.length() > s2.length() ? s1.length() : s2.length();
if(s1.length()< max)
{
for(int i=0;i<max-s1.length();i++)
s1 = "0" + s1;
}
if(s2.length()< max)
{
for(int i=0;i<max-s2.length();i++)
s2 = "0" + s2;
}
String str = "";
for(int i=0;i<max;i++)
{
int m = Integer.parseInt(s1.substring(i, i+1));
int n = Integer.parseInt(s2.substring(i,i+1));
str += m|n;
}
return str;
}
public class Test {
public static void main(String args[]) {
String s1="11101001010100100101001011010010101111";
String s2="10001001010111111111001011010010101010";
String s3 = XOR(s1, s2);
System.out.println("s1 = " + s1);
System.out.println("s2 = " + s2);
System.out.println("s3 = " + s3);
}
public static String XOR(String s1, String s2) {
char result[] = new char[s1.length()];
for(int i = 0; i < s1.length(); ++i) {
result[i] = s1.charAt(i) == s2.charAt(i) ? '0' : '1';
}
return new String(result);
}
}
public static void main(String args[]) {
String s1="11101001010100100101001011010010101111";
String s2="10001001010111111111001011010010101010";
BigInteger bi1 = new BigInteger(s1, 2);
BigInteger bi2 = new BigInteger(s2, 2);
BigInteger bi3 = bi1.xor(bi2);
String s3 = bi3.toString(2);
System.out.println("s1 = " + s1);
System.out.println("s2 = " + s2);
System.out.println("s3 = " + s3);
}
}
daniel_kaka()你的意思是把s1转换成BigInteger吗,然后呢,不太懂,能指点下吗.
BigInteger bi3 = bi1.or(bi2);吧,不是XOR?
行吗?
String s2="10001001010111111111001011010010101010";
BigInteger bi1 = new BigInteger(s1,2);
BigInteger bi2 = new BigInteger(s2,2);
System.out.println("s1 = " + bi1.doubleValue());
System.out.println("s2 = " + bi2.doubleValue());
BigInteger bi3 = bi1.or(bi2);
System.out.println("s2 = " + bi3.toString(2));
输出结果:
s3 = 11101001010111111111001011010010101111
没问题吧。
写的两个程序全按xor处理了,呵呵。楼主自己改改吧。