正數十進制轉二進制:是除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
控制檯打印的結果爲: