正数十进制转二进制:是除2取余数倒序
负数十进制转二进制:是相对应正数的 二进制 反码
OC实现:
//
// NSString+Convert.h
// Test
//
// Created by QearlYu on 2019/7/12.
// Copyright © 2019年 QearlYu. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (Convert)
- (NSString *)binary;
@end
//
// NSString+Convert.m
// Test
//
// Created by QearlYu on 2019/7/12.
// Copyright © 2019年 QearlYu. All rights reserved.
//
#import "NSString+Convert.h"
@implementation NSString (Convert)
- (NSString *)binary {
NSInteger decimalism = self.integerValue; // 把输入的十进制字符串 转为 int类型
BOOL isReverse = NO; // 控制是否反码
if (decimalism < 0) { // 输入的十进制如果是小于零的话,二进制反码
decimalism = -decimalism;
isReverse = YES;
}
NSMutableString *result = [NSMutableString new];
while (decimalism > 0) { // 当商等于0时,循环终止
NSInteger temp = decimalism % 2;
decimalism = decimalism /2;
// 余数倒序拼接,余数一直拼在result字符串的前面
// 正数直接取余数倒序,负数二进制进行0和1的反码互换后倒序拼接
NSString *tempString = [NSString stringWithFormat:@"%ld", isReverse ? (temp == 0 ? 1 : 0) : temp];
result = [tempString stringByAppendingString:result];
}
return result;
}
@end
控制台打印的结果为: