正数十进制转二进制:是除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
控制台打印的结果为:

博客介绍了十进制转二进制的方法,正数十进制转二进制是除2取余数倒序,负数十进制转二进制是对应正数二进制的反码,还提及了OC实现,但未给出具体代码,仅说明了控制台打印结果。
188

被折叠的 条评论
为什么被折叠?



