美容网站开发建造师人才网交流平台
美容网站开发,建造师人才网交流平台,网站后台有显示前台没有,红叶网站开发工作室思路#xff1a;
牵扯到二进制数#xff0c;基本上要考虑位运算符#xff0c;相关知识可以见http://t.csdnimg.cn/fzts7
之前做过类似的题目#xff0c;大致思路就是先用按位异或^找出不同位#xff0c;再用n#xff08;n-1#xff09;计算出不同位的个数#x…
思路
牵扯到二进制数基本上要考虑位运算符相关知识可以见http://t.csdnimg.cn/fzts7
之前做过类似的题目大致思路就是先用按位异或^找出不同位再用nn-1计算出不同位的个数但是这道题有个小坑就是极限了话n刚好为int类型的最小值即二进制数为1000……0000此时n-1就会溢出。
就是A和B的二进制数刚好是1000……0000和0000……0000此时nA^B就是1000……0000所以此时n再减1就溢出了因此我们要考虑这个特殊情况
INT_MIN 代表int类型的最小值即-2147483648
INT_MAX 代表int类型的最大值即2147483647
定义INT_MIN 只能 INT_MIN ( - INT_MAX) - 1
而不能 INT_MIN - ( INT_MAX 1) 因为这样就溢出最大值了
其头文件为#includelimits.h
int convertInteger(int A, int B)
{int count0;int nA^B;while(n){if(nINT_MIN) //如果是最小值{count; break;}nn(n-1); //减去一个1的个数count; }return count;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88934.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!