short类型转为二进制,并将转换后的二进制打印出来?如何实现? short shortint = 5; String strprint = Integer.toBinaryString(shortint); System.out.println(strprint); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我经过实验发现caffv兄弟的方法存在欠缺,应该还要做一些改动才可以。因为seasun2k的问题是要将short形的整数转换为二进制:注意应该是16位的标准二进制。如果用caffv的方法,当shortint为5时将产生这样的输出 101 (A) 当shortint为-5时将产生这样的输出:11111111111111111111111111111011 (B) 这的长度为32也即是整形int的二进制格式。当然你可以对这样的输出再作处理得到正确的结果,如将(A)式的输出高位补0,将(B)式输出高16位截掉。但这样的程序速度上一定不是最优的。 本人设计了一个这样的程序,可以实现问题解: public static String short2binary(short num){double term;String binaryStr="";if(num<0) {//这个数为负数num=(short)Math.abs(num);String negStr=short2binary(num);StringBuffer strBuf=new StringBuffer(negStr);//先得到这个数绝对值的二进制串char[] binChar={'0','1'};/////////////////取这个数的补码,既是这个数绝对值的二进制的补码///////////////////////////////先取反码///////////////////////////// for (int j=0;j<=15 ;j++ ) { if (strBuf.charAt(j)==binChar[0]) { strBuf.setCharAt(j,binChar[1]); } else { strBuf.setCharAt(j,binChar[0]); } }//////////////反码家1///////////////////////////// if (strBuf.charAt(15)==binChar[0]) { strBuf.setCharAt(15,binChar[1]); return strBuf.toString(); }else { strBuf.setCharAt(15,binChar[0]); for (int i = 15; i>0 ; i--) { if (strBuf.charAt(i-1)==binChar[1]) { strBuf.setCharAt(i-1,binChar[0]); if (i==1) { return strBuf.toString(); } else { continue; } }else{ strBuf.setCharAt(i-1,binChar[1]); return strBuf.toString(); } } }}for(int i=15;i>=0;i--){//求取这个树的二进制串 term=Math.pow(2,i); if(num==term){ binaryStr+="1"; for(int j=0;j<i;j++) binaryStr+="0"; return binaryStr; }else if(num>term){ binaryStr+="1"; num=(short)(num-term); } else { binaryStr+="0"; }} return binaryStr;} 不同版本JDK对正则表达式支持不同? JWindow的右键菜单在失去焦点后不能自动消失 线程协作的问题 为什么用大O表示的结果是O(nlogn)? 想用mvc的模式编写一个atm!请教! 如何在JTextField中回车执行一个方法 用JB做一个application,会自动生成两个文件,其中一个是***Frame1.java文件,难道所在的界面都要在这里写? 奇怪的java问题 俺是懒汉。100分请教一个小问题 高分请教关于网络编程方面的? 求JAVA高性能数据传送方案 JBuilder4.0上用AWT开发的AppletIE5浏览不了,为什么?
的问题是要将short形的整数转换为二进制:注意应该是16位的标准二进制。
如果用caffv的方法,当shortint为5时将产生这样的输出
101 (A)
当shortint为-5时将产生这样的输出:11111111111111111111111111111011 (B)
这的长度为32也即是整形int的二进制格式。当然你可以对这样的输出再作处理得到正确的结果,如将(A)式的输出高位补0,将(B)式输出高16位截掉。但这样的程序速度上一定不是最优的。
本人设计了一个这样的程序,可以实现问题解:
public static String short2binary(short num){
double term;
String binaryStr="";
if(num<0) {//这个数为负数
num=(short)Math.abs(num);
String negStr=short2binary(num);
StringBuffer strBuf=new StringBuffer(negStr);//先得到这个数绝对值的二进制串
char[] binChar={'0','1'};
/////////////////取这个数的补码,既是这个数绝对值的二进制的补码//////////////////
/////////////先取反码/////////////////////////////
for (int j=0;j<=15 ;j++ ) {
if (strBuf.charAt(j)==binChar[0]) {
strBuf.setCharAt(j,binChar[1]);
}
else {
strBuf.setCharAt(j,binChar[0]);
}
}
//////////////反码家1///////////////////////////// if (strBuf.charAt(15)==binChar[0]) {
strBuf.setCharAt(15,binChar[1]);
return strBuf.toString();
}else {
strBuf.setCharAt(15,binChar[0]);
for (int i = 15; i>0 ; i--) {
if (strBuf.charAt(i-1)==binChar[1]) {
strBuf.setCharAt(i-1,binChar[0]);
if (i==1) {
return strBuf.toString();
}
else {
continue;
} }else{
strBuf.setCharAt(i-1,binChar[1]);
return strBuf.toString();
} } }
}
for(int i=15;i>=0;i--){//求取这个树的二进制串
term=Math.pow(2,i);
if(num==term){
binaryStr+="1";
for(int j=0;j<i;j++) binaryStr+="0";
return binaryStr;
}else if(num>term){
binaryStr+="1";
num=(short)(num-term);
} else {
binaryStr+="0";
}
}
return binaryStr;
}