十进制转成二进制,分别数组和字符串的形式返回

在应届生笔试中,经常会遇到进制的转换,可能会以不同的格式返回,下面的代码就是十进制转成二进制,分别以数组和字符串的形式返回,代码如下:

//10进制转成2进制,返回数组
-(NSMutableArray*)convertBinary:(int) decimal{
    
    NSMutableArray *tmp = [NSMutableArray arrayWithObjects:[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],[NSNumber numberWithInt:0],nil];
    NSUInteger index=7;
    int remainder =0;//余数
    int divisor = decimal;//整数
    while(divisor > 0) {
        remainder = divisor%2;
        [tmp replaceObjectAtIndex: index withObject:[NSNumber numberWithInt:remainder]];
        divisor=divisor/2;
        index--;
    }
    return tmp;
}

//十进制转二进制,返回字符串
- (NSString*)toBinarySystemWithDecimalSystem:(int)num length:(int)length
{
    int remainder =0;//余数
    int divisor =0;//除数
    NSString* prepare =@"";
    while(true)
    {
        remainder = num%2;
        divisor = num/2;
        num = divisor;
        prepare = [prepare stringByAppendingFormat:@"%d",remainder];
        if(divisor == 0){
            break;
        }
    }
    //倒序输出
    NSString* result = @"";
    for(int i = length -1; i >=0; i --){
        if(i <= prepare.length-1) {
            result = [result stringByAppendingFormat:@"%@",
                      [prepare substringWithRange:NSMakeRange(i ,1)]];
        }else{
            result = [result stringByAppendingString:@"0"];
        }
    }
    NSLog(@"result=%@",result);
    return result;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 《傲慢与偏见》这部作品以日常生活为素材,描写傲慢的单身青年达西与偏见的二小姐伊丽莎白、富裕的单身贵族彬格莱与贤淑的...
    好青年就是我阅读 201评论 0 0
  • 仍旧记得那是一个小雨绵绵的日子,我提着一个二十八寸的的行李箱,独自乘坐通往学校的班车,坐在车上想着未来的大学生...
    请叫我大王_0937阅读 198评论 0 0