黑马程序员技术交流社区

标题: 进制转换 [打印本页]

作者: 陈cc    时间: 2015-8-10 09:32
标题: 进制转换
负数二进制怎么转成十进制,求指导
作者: fantianfei    时间: 2015-8-10 09:38
负数有二进制么?
作者: 耀阳圣尊    时间: 2015-8-10 14:32
不知道是不是你的意思,如果还有疑问的话请加我QQ2355928351
  1. Scanner sc = new Scanner(System.in);
  2.                  String as = sc.nextLine();
  3.                  int aa = Integer.parseInt(as);
  4.                   StringBuffer sbf = toBin(aa);
  5.                   String str = sbf.reverse().toString();
  6.                   System.out.println(str);
  7.                   str = sbf.reverse().toString();
  8.                   String a = Integer.valueOf(str,2).toString();
  9.                   System.out.println(a);
  10.                  }
  11.                  static StringBuffer toBin(int x) {
  12.                   StringBuffer result = new StringBuffer();
  13.                   int n = 0;
  14.                   if(x>=0){
  15.                    n = x;
  16.                    do {
  17.                     result.append(n % 2);
  18.                     n /= 2;
  19.                    } while (n > 0);
  20.                   }else{
  21.                    n=(x*-1^255)+1;
  22.                    do {
  23.                     result.append(n % 2);
  24.                     n /= 2;
  25.                    } while (n > 0);
  26.                     
  27.                   }
  28.                   return result;
  29.                  }
复制代码

作者: 陈cc    时间: 2015-8-10 21:32
耀阳圣尊 发表于 2015-8-10 14:32
不知道是不是你的意思,如果还有疑问的话请加我QQ2355928351

我只看到毕老师的前6天,,写的看不懂,我问的其实就是 比如  二进制的110,通过计算比如,1*2E2+1*2E1=6,负数是不是也能这么计算?
作者: godboy001    时间: 2015-8-10 22:04
能不能这样,先判断符号位,就是&0x80之类的,对结果做判断如果是负数,就整体减去1,然后按位取反,获得的二进制数按位乘权值相加得到十进制,然后再取反
作者: godboy001    时间: 2015-8-10 22:08
负数二进制转十进制,你先要想通负数的二进制是怎么算出来的,是由正数的二进制按位取反然后加1得到的
反过来,先减一,然后按位取反,得到正数,然后再取反得到负数,在哪里应用我觉得思路也是这样的
作者: ch18346846149    时间: 2015-8-10 22:16
还真不会,求解
作者: 陈cc    时间: 2015-8-10 22:17
godboy001 发表于 2015-8-10 22:08
负数二进制转十进制,你先要想通负数的二进制是怎么算出来的,是由正数的二进制按位取反然后加1得到的
反过来 ...

好有道理的样子,我再去想想看,多谢大神了
作者: 龙哥Longer    时间: 2015-8-10 22:18
谢谢分享~学习了
作者: 何琼飞    时间: 2015-8-10 22:31
是二进制没有负数,有也只是在转换的时候




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2