★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址: https://www.cnblogs.com/strengthen/p/10546205.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Every non-negative integer N has a binary representation.  For example, 5 can be represented as "101" in binary, 11 as "1011" in binary, and so on.  Note that except for N = 0, there are no leading zeroes in any binary representation.

The complement of a binary representation is the number in binary you get when changing every 1 to a 0and 0 to a 1.  For example, the complement of "101" in binary is "010" in binary.

For a given number N in base-10, return the complement of it's binary representation as a base-10 integer.

Example 1:

Input: 5
Output: 2
Explanation: 5 is "101" in binary, with complement "010" in binary, which is 2 in base-10.

Example 2:

Input: 7
Output: 0
Explanation: 7 is "111" in binary, with complement "000" in binary, which is 0 in base-10.

Example 3:

Input: 10
Output: 5
Explanation: 10 is "1010" in binary, with complement "0101" in binary, which is 5 in base-10.

Note:

  1. 0 <= N < 10^9

每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 "101"11 可以用二进制 "1011" 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。

二进制的补码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制补码为 "010"

给定十进制数 N,返回其二进制表示的补码所对应的十进制整数。

示例 1:

输入:5
输出:2
解释:5 的二进制表示为 "101",其二进制补码为 "010",也就是十进制中的 2 。

示例 2:

输入:7
输出:0
解释:7 的二进制表示为 "111",其二进制补码为 "000",也就是十进制中的 0 。

示例 3:

输入:10
输出:5
解释:10 的二进制表示为 "1010",其二进制补码为 "0101",也就是十进制中的 5 。 

提示:

  1. 0 <= N < 10^9

Runtime: 4 ms
Memory Usage: 19 MB
 1 class Solution {
 2     func bitwiseComplement(_ N: Int) -> Int {
 3         var N = N
 4         var bits:[Int] = [Int]()
 5         repeat{
 6             bits.append(N % 2)
 7             N /= 2
 8         }while(N != 0)
 9         for i in 0..<bits.count
10         {
11             bits[i] = 1 - bits[i]
12         }
13         var val:Int = 0
14         var p:Int = 1
15         for i in 0..<bits.count
16         {
17             val += p * bits[i]
18             p *= 2
19         }
20         return val
21     }
22 }


4ms
1 class Solution {
2     func bitwiseComplement(_ N: Int) -> Int {
3         var c = 1
4         while c < N {
5             c = (c << 1) | 1
6         }
7         return N ^ c
8     }
9 }


Runtime: 8 ms

Memory Usage: 18.9 MB
 1 class Solution {
 2     func bitwiseComplement(_ N: Int) -> Int {
 3         var arrInt:[Int] = String(N,radix:2).map{Int(String($0))!}
 4         for i in 0..<arrInt.count
 5         {
 6             arrInt[i] = 1 - arrInt[i]
 7         }
 8         return String(arrInt.map{Character(String($0))}).BinaryToDecimal()
 9     }
10 }
11 extension String{
12    func BinaryToDecimal() -> Int {
13        var sum:Int = 0
14        for c in self.characters {
15            if let number = Int(String(c))
16            {
17                sum = sum * 2 + number
18            }
19        }
20        return sum
21    }
22 }

转载于:https://www.cnblogs.com/strengthen/p/10546205.html

[Swift]LeetCode1009. 十进制整数的补码 | Complement of Base 10 Integer相关推荐

  1. 二进制整数转换为十进制整数[包括负数的转换]

    二进制整数转换为十进制整数 [问题描述] 编写程序,输入字符串形式的二进制整数(长度为16位,采用补码表示),把它转换为十进制整数,输出该十进制整数.补码首位表示符号,0代表正数,1代表负数. 需要注 ...

  2. 整数二进制补码的数学原理(two's complement)

    转载自整数二进制补码的数学原理(two's complement) ================================================================== ...

  3. 十进制整数(包括负数)和二进制的转换

    原码: 符号位+n位数值位 反码: 将原码的符号位不变,其余位取反 补码: 反码+1=补码 正数的原码.反码.补码都相同 一.十进制整数转换为二进制数 采用除2取余的方法: 1.用2去除十进制整数,得 ...

  4. (实验一)十进制整数的原反补移码实现

    文章目录 1. 实验要求 2. 相关知识点 0. 机器数 1. 原码 2. 反码 3. 补码 4. 移码 3. 实现思路 0. 准备 1. 转二进制 2. 实现原码 3. 实现反码 4. 实现补码 5 ...

  5. 十进制整数转化为二进制详解

    要想编写十进制转化成二进制的带码首先要清楚十进制转化成二进制的算法,下面我们从两个方面实现这个转化: 1.按照十进制转化成十进制的常规算法实现: 普通算法实现: 我们举一个简单的例子,比如取整数52 ...

  6. matlab十进制转二进制补码函数

    matlab十进制转二进制补码函数 函数代码 读者可根据需求对函数进行更改. %%十进制整数转二进制反码 function Bin = dTobin(N,M)%N表示位数,M表示十进制数,if (M ...

  7. 位运算符之无符号右移(十进制整数)

    一.无符号右移运算符的概念 无符号右移运算符用">>>"(三个大于号)表示.它会将数值的所有位向右移动指定的位数,左方空缺的位用0补充. 二.无符号右移运算符的使 ...

  8. C语言 十进制转二进制补码(正负都可) 指针 初学

    十进制转二进制补码(正负都可) 指针初学 将一个十进制正(负)整数转换为对应的二进制补码(用指针完成 十进制转二进制:1.先判断该整数是正数还是负数 如果是正数则二进制补码首位为1 , 且对应的二进制 ...

  9. Java黑皮书课后题第5章:**5.38(十进制转八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值。(不要是使用Java的Integer类的任何方法)

    **5.38(十进制转八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值.(不要是使用Java的Integer类的任何方法) 题目 题目概述 破题 代码 运行示例 题目 题目概述 * ...

最新文章

  1. 解密Elasticsearch技术,腾讯开源的万亿级分布式搜索分析引擎
  2. Python参考书籍
  3. oracle rowid mysql_相当于Oracle的RowID在MySQL中
  4. 【BZOJ1797】[AHOI2009]最小割(网络流)
  5. 真相了!敲代码时,程序员戴耳机究竟在听什么?
  6. [AGC014D] Black and White Tree(树形DP,博弈)
  7. flutter listview 滚动到底部_Flutter系列之Flex布局详解
  8. matlab对比r语言,R语言与matlab循环时间对比
  9. static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量
  10. python 前端开发_python和前端开发怎么抉择?
  11. 分享2个堪称黑科技的Ai一键抠图网站 让你秒变PS抠图大神
  12. dec是几进制(oct是几进制)
  13. Jetpack:Room配合LiveData/Flow使用优化,Room+Flow使用原理解析。
  14. gee mysql数据库_MySQL
  15. Android仿淘宝头条垂直滚动,垂直走马灯,公告
  16. 武大教授计算机学院,武汉大学姬东鸿教授访问计算机科学学院和智能信息处理及应用实验室...
  17. 关于redis 小白从入门到大神
  18. wilf tree java_伴读 | 牛津树【2-9】New Trees
  19. 命令模式——经营烧烤摊
  20. 王者荣耀微信哪个服务器人多,王者荣耀微信区和qq区哪个厉害

热门文章

  1. linux 5.5 外接usb2.0硬盘,RHEL5 使用pam_usb
  2. 什么叫python设计模式_什么是Python设计模式
  3. 使用Scrapy,帮你快速抓取网页数据(代码可下载)!
  4. 数据科学家教你用数据模型来泡妞
  5. 如何创建linux 脚本,如何创建和执行shell脚本
  6. 社区发现(五)--BP(信念传播算法)
  7. arduino的矩阵示例程序_用树莓派 Arduino 制造 LED 矩阵彩灯
  8. 前端面试题2021(超详细)
  9. 计算机加域成灰色,高手解说win7系统创建域选项变成灰色的具体教程
  10. presto distinct用法