九度oj1513
来源:互联网 发布:淘宝助理水印图片大小 编辑:程序博客网 时间:2024/06/15 05:16
- 题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入:
输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。
- 输出:
对应每个测试案例,
输出一个整数,代表输入的那个数中1的个数。
这道题拿过来第一想法就是按照手动算法一步一步来,可是写到后来觉得很麻烦,然后想到可以利用位运算,这道题就解决啦。这里有几点要注意:
1. 对于int ,左移补0,右移补符号位。
2. 想要得到数的每一位,有下面几种写法
int j=0;while(x){a[j++]=x&1;x>>=1;}这种方法有两个问题,首先你得到的是反序,需要有对调的过程,当然这不是最重要的,如果是正数,可以正常结束,没有问题,如果是负数,右移补1,则会死循环。
或者
int j=0;for(i=0;i<32;i++){a[j++]=x&1;x>>=1;}这个解决 了死循环,但是还是要反序,当然以上两种办法都改变了x这个数本身。
比较好的是这种方法
for(i=31;i>=0;i--){if(x&(1<<i))cout<<"1";else cout<<"0";}x没动,只是左移1,而且不用反序,比较好的解决了三个问题。
0 0
- 九度oj1513
- 【剑指Offer面试题】 九度OJ1513:二进制中1的个数
- 【杭电oj1513】Palindrome
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- 【九度OJ】:九度OJ 1059
- 【九度OJ】:九度OJ 1206
- 人生九度
- 九度oj1181
- 九度oj1207
- 九度oj1182
- 九度o j1026
- 九度oj1186
- 九度oj1074
- 九度oj1127
- 九度oj1051
- 九度oj1197
- C#中Find及Findindex用法
- 滴滴打车创新盈利方式
- 2015多校联合训练第三场Painter(hdu5319)
- 【leetCode】Sliding Window Maximum【求高人解释】
- java学习基础
- 九度oj1513
- 更改Appsettings
- Qt归纳(三)
- 面试准备---计算机网络(一)
- LeetCode之Merge Two Sorted Lists
- xcode RTImageAssets插件(将@3x图片转换为@2x和@1x)
- Error creating bean with name 'empresasDAO': Injection of autowired dependencies failed up vote 0
- 创业之技术合伙人--明道,取势,优术
- XPath选择节点