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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 絮缘小默 中级黑马   /  2014-2-22 00:40  /  931 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求教二进制的算法

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

4 个回复

倒序浏览
二进制:逢2进1
加法法则: 0+0=0,0+1=1+0=1,1+1=10
减法,当需要向上一位借数时,必须把上一位的1看成下一位的(2)10。
减法法则: 0-0 =0,1-0=1,1-1=0,0-1=1 有借位,借1当(10) 看成 2 则 0 - 1 - 1 = 0 有借位 1 - 1 - 1 = 1 有借位。
乘法法则: 0×0=0,0×1=0,1×0=0,1×1=1
除法应注意: 0÷0 =0(无意义),0÷1 =0,1÷0 =0(无意义)
除法法则: 0÷1=0,1÷1=1

还是要问二进制转换成其他进制?
转换的方法很多,没种在百度搜下就可以了,我也是自己百度学的。
二进制转八进制和二进制转十六进制最简单

每位二进代表一个数值,从右边开始算如:
二进制:1111
代表:8421   (如果上面二进制数为0那么下面那一位也为0)

二进制转八进制:每3位二进制为一位八进制(3位相加)
二进制转十六进制:每4位二进制为一位十六进制(4位相加)

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
class ArrayTest
{
        public static void main(String[] args)
{
        toBin(6);
       
}
public static void toBin(int num)
{
        StringBuffer sb = new StringBuffer();
         
        while(num>0)
        {
                //System.out.println(num%2);
                sb.append(num%2);//添加
num=num/2;
}
System.out.println(sb.reverse());//翻转功能
}
}
这是十进制转换为二进制的代码……,你可以看看

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
好的,很详细,谢谢
回复 使用道具 举报
任何进制都能查的方法
  1. class Demo8{
  2.         public static void main(String[] args) {       
  3.                 to(60,15,4);
  4.         }
  5.         // 定义一个   数      要与上的数  这个数右移的位数
  6.         public static void to(int num,int base,int index) {
  7.                 //判断num是0的情况
  8.                 while (num == 0 ) {
  9.                         System.out.println('0');
  10.                         return;
  11.                 }
  12.                 //查表法建立一个数组,16进制所有元素都有也就包含了八进制,二进制
  13.                 char[] chs = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
  14.                 //定义一个数组将最后我们要的结果的元素装进去,必须是32位因为int 32位二进制表示
  15.                 char[] arr = new char[32];
  16.                 //定义一个指针来记录最后结果数组的有效位
  17.                 int pos = arr.length - 1;
  18.                 //判断将有效位的元素值全部赋予最后我们要的结果数组
  19.                 while (num != 0) {
  20.                         int temp = num & base;
  21.                         arr[pos] = chs[temp];
  22.                         pos--;
  23.                         num = num >>> index;
  24.                 }
  25.                 //从结果位的有效位来循环遍历数组,注意此时的pos是在有效位得到后还自减了一回,所以,我们要+1
  26.                 for (int x = pos + 1;x < arr.length ;x++ ) {
  27.                         System.out.print(arr[x]);
  28.                 }
  29.         }
  30. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

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