A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李力 中级黑马   /  2013-4-5 23:18  /  1695 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo00
{
   public static void main(String[] args)
        {
                toBin(6);
        }
        public static void toBin(int num)
        {
                StringBuffer sb = new StringBuffer();
                while(num>0)
                {
                        sb.append(num%2);
                        num = num/2;

                }
                System.out.print(sb.reverse());
        }


}
//十进制转换为二进制,这是毕老师写的实现方法!这个只适合num>0;
//如果num<o是不是先求正的数的二进制后再取反加一呢?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

正序浏览
前段时间网线不给力!时有时无!抱歉啊!
回复 使用道具 举报
好的谢谢各位大神!
回复 使用道具 举报
~这是取反码的标识
在加上1
回复 使用道具 举报
1.先将负数的绝对值转换成二进制,
2.然后求该二进制数的反码,
3.最后为第二步得到的二进制数+1

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
是的,如果是负数,先将负数的绝对值转成2进制,然后取该2进制的反码,最后在将反码加1.
比如求-5的二进制,先求5的二进制,是0000 0101;
再取反码,为1111 1010;
然后再加1,变成1111 1011,就是-5的二进制

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
class Demo00
{
   public static void main(String[] args)
        {
                toBin(6);
        }
        public static void toBin(int num)
        {
                StringBuffer sb = new StringBuffer();
                while(num>0)
                {
                        sb.append(num%2);
                        num = num/2;

                }
                System.out.print(sb.reverse());
        }


}

中的 sb.append(num%2);
                        num = num/2;
把十进制的数不断除二取余把结果放到StringBuilder中去
然后取反取出。
如果一个数用二进制表示的话,那么他的负数是 每位取反并且加一。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马