CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

short类型转为二进制,并将转换后的二进制打印出来?如何实现?

楼主seasun2k(我是一只游泳的鱼)2001-08-01 14:45:42 在 Java / J2SE / 基础类 提问

问题点数:20、回复次数:2Top

1 楼caffv(三人行唯有我吃)回复于 2001-08-01 14:53:48 得分 20

                short   shortint   =   5;  
                  String     strprint   =   Integer.toBinaryString(shortint);  
                  System.out.println(strprint);Top

2 楼hajunma(害群马)回复于 2001-08-02 09:50:42 得分 0

我经过实验发现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;  
  }Top

相关问题

  • 二进制转换问题??
  • 二进制转换成十进制
  • 二进制数转换问题
  • 数据的转换(二进制)
  • 简单的二进制转换问题
  • BASE64编码转换成二进制
  • BASE64编码转换成二进制
  • 请问十进制转换为二进制的函数和二进制转换为十进制的函数?
  • 如何把二进制转为十六进制?
  • 在js中,如果将一个数字转为二进制?

关键词

  • 二进制
  • binarystr
  • strbuf
  • binchar
  • shortint
  • term
  • 输出
  • short
  • num
  • else

得分解答快速导航

  • 帖主:seasun2k
  • caffv

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo