short shortint = 5;
String strprint = Integer.toBinaryString(shortint);
System.out.println(strprint);
String strprint = Integer.toBinaryString(shortint);
System.out.println(strprint);
解决方案 »
- 为什么在按钮上图标无法显示出来??路径没有错
- 我写了个项目 ssh写的 在单位没有是 tomcat。在家tomcat启动不行了
- jtable中增加combox的事件?
- 有关javamail发带附件邮件的问题 谢谢
- 带包名的java文件怎样编译运行??
- applet中图片的放大缩小,是怎么实现的?
- 今天查了高程成绩43/62(差2分),几星期前CET4成绩58.....散分~~~~
- 请问大家JBoss的稳定性和效率如何?
- 如何写一个程序求出质数?(除1和本身外不能被其他数整除)
- 如何理解java中的方法可以创建本身类对象
- 求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;
}