首页
比赛
tracker
题库
课程
竞赛讨论区
登录
/
注册
去牛客
首页
>
二进制中1的个数
266条解析
开通博客写题解
牛客题解官
发表于 2020-05-29 15:05:13
题目的主要信息: 统计32位整型有符号数二进制中1的个数 因负数用补码表示,故不能用连除法 举一反三: 学习完本题的思路你可以解决如下题目: JZ64. 求1+2+3+...+n JZ65. 不用加减乘除做加法 方法一:循环按位比较法(推荐使用) 知识点:位运算 计算机的数字由二进制表示,我们平
展开全文
Maokt
发表于 2021-06-23 09:17:02
算法思路一:位运算右移 解题思路: 判断 n 最右一位是否为 11 ,根据结果计数。将 n 右移一位(本题要求把数字 n 看作无符号数,因此使用 无符号右移 操作) 算法流程: 初
展开全文
大菠萝侦探
发表于 2021-06-19 17:34:05
方法一:检查二进制每一位数字 我们通过右移操作消除第 i 位右边的数字,通过与 1 操作消除第 i 位左边的所有数字,对数字 n 重复32次这种操作就可以求得每一位的数字。当我们要提取从右往左数第3位数字时:c++代码如下: class Solution { public: int Nu
展开全文
开车的阿Q
发表于 2021-06-19 18:54:47
描述 这是一篇面对初级coder的题解。 知识点:二进制基础知识,位运算操作 难度:一星 题解 题目:输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。 本题主要考察计算机数据存储的基本知识 首先是对于正数 考的是二进制到十进制的转化 我们平时的数
展开全文
枫叶零渡
发表于 2021-06-30 16:55:06
题目描述 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示示例:输入:10返回:2 我们发现将10 转成二进制为1010,按照题目的描述,表示1的个数有2个,所以返回2 这时我们自定义输入个数:15,看看二进制结果是多少? 返回1的个数的结果应该是4,为什么输入10 的二进制是1
展开全文
WEHAWT
发表于 2019-09-12 12:47:09
链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8?f=discussion来源:牛客网 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 (搬运评论区大佬的解释)如果一个整数不为
展开全文
Fzccc
发表于 2019-12-22 11:16:27
傻子方法来一个:1、先将数字转换成二进制字符串2、用String.split()函数存入一个数组中3、遍历数组跟1比较,同时计数4、输出计数值 public class Solution { public int NumberOf1(int n) { String s=In
展开全文
中工升达预备毕业生
发表于 2019-09-03 11:40:24
在机器中,整数的存储和运算都是其补码表示的。 正数右移:保持为正数,相当于/2。 负数右移:保持为负数,移位前是负数,移位后保持是负数,因此移位后最高位设为1。如果一直右移,最终会变成-1,即(-1)>>1是-1。 正数左移:不保持为正数,相当于*2。(注意:1左移31时为负数最大
展开全文
少一块星空
发表于 2020-01-03 16:21:11
python中首先明确一点就是二进制没有位数的概念,所以也就无法获得负数真实表示方法 n = -3 n = n & 0xffffffff #n=4294967293 bin(n)#查看二进制形式:'0b11111111
展开全文
把牛妹带回家
发表于 2019-07-26 15:48:26
二进制计算 显然,一个很简单的思路是一个一个数 class Solution: def NumberOf1(self, n): # write code here if n<0: n=n&0xffffffff
展开全文
码bug的小砖家
发表于 2019-08-06 00:32:43
public class Solution { public int NumberOf1(int n) { int count = 0; while(n != 0){ count += (n & 1); //每次判断最低位是否为
展开全文
mtgo666
发表于 2022-02-21 15:02:58
基础知识 负数在计算机中是用补码来存储的,由于正数的补码就是原码,姑可以推广到所有的数在计算机中都是用补码来存储的。 原码:就是数的二进制形式。负数的原码最高位是1,代表符号位。 反码:正数的反码还是其本身,负数的反码是在原码的基础上,符号位不变,其余位按位取反。 补码:正数的补码还是其本身,负数
展开全文
道阻且长z
发表于 2019-09-25 00:14:19
思路: 1.利用一个结论:一个二进制数n减1后与原二进制数进行&运算( 即n&(n-1) )会消去最右边的1。2.这个结论怎么来的? 假设二进制数101进行减1运算,刚好最右边是1,则得到100,此时用100跟101做&运算,得到的是100,故消去了101左右边的1。 10
展开全文
心谭
发表于 2019-12-31 22:26:44
【2种解法】【JavaScript题解】【剑指offer】 题目描述 输入一个整数,输出该数二进制表示中 1 的个数。其中负数用补码表示。 专注前端与算法的系列干货分享,欢迎关注(¬‿¬):「微信公众号:心谭博客」| xxoo521.com | GitHub 解法 1: 判断每一位 依次判断数字
展开全文
宫水三叶的刷题日记
发表于 2021-07-26 15:12:14
「位数检查」解法 一个朴素的做法是,对 int 的每一位进行检查,并统计 的个数。 代码: public class Solution { public int NumberOf1(int n) { int ans = 0; for (int i = 0;
展开全文
查看本题
查看本题讨论
等你来战
查看全部
牛客小白月赛131
报名截止时间:2026-04-10 21:00
2026年浙江工业大学之江学院程序设计竞赛
报名截止时间:2026-04-11 16:00
北华大学第十三届大学生程序设计竞赛(同步赛)
报名截止时间:2026-04-12 18:00
牛客周赛 Round 139
报名截止时间:2026-04-12 21:00
牛客练习赛151
报名截止时间:2026-04-17 21:30
扫描二维码,关注牛客
意见反馈
下载牛客APP,随时随地刷题