LeetCode每日一题: 十进制整数的反码(No.189)

栏目: 编程工具 · 发布时间: 6年前

每个非负整数 N 都有其二进制表示。
例如, 5 可以被表示为二进制 "101",11 可以用二进制 "1011" 表示,依此类推。
注意,除 N = 0 外,任何二进制表示中都不含前导零。
二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。
给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。
复制代码

示例:

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

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

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

思考:

这道题将原数二进制表示中的1变为0变为1即可,可以使用异或位运算来完成。
异或运算相同为0,不同为1。
例如:10101^11111 = 01010 
所以这题可以将N与比他大的二进制所有位都为1的数进行异或运算,即为结果。
所以先求这个比N大且所有位都为1的数。
通过<<左移运算符来计算,<<1等于乘以2,二进制中等于在原数后加一个0。
1 << 1 = 10 + 1 = 11
11 << 1 = 110 +1 = 111
......
求的大于N且每位都为1的数,与N异或即可。
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Alone Together

Alone Together

Sherry Turkle / Basic Books / 2011-1-11 / USD 28.95

Consider Facebookit’s human contact, only easier to engage with and easier to avoid. Developing technology promises closeness. Sometimes it delivers, but much of our modern life leaves us less connect......一起来看看 《Alone Together》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具