2的幂次方表示题解

您所在的位置:网站首页 2的所有次方 2的幂次方表示题解

2的幂次方表示题解

2024-07-04 15:57| 来源: 网络整理| 查看: 265

2的幂次方表示题解

芬贝多: 因为2进制正是计算机储存数据的方法,所以个人认为这一题用位运算能够更方便地解决此问题。 [code=cpp] #include #include using namespace std; void f(int n) { if(n==0)//结束递归,避免出现 0=2(2(2(… printf("0"); else { int i=0; while(n >> i+1)//用于计算满足 n >= 2(i) 的i的最大值 ++i; if(i==1)//避免出现 2=2(2(0)) printf("2"); else { printf("2("); f(i);//继续分解打印 n=2(i)… 中的 'i' printf(")"); } if(n & n-1)//用于判断是否要进行'+'运算 /* 较难理解,以5和16为例: 101 1000 &100 & 111 100 0000 可以看出 n & n-1 用于去除数二进制表示中位数最低的'1' 一旦 n & n-1 为真,则表示 n 二进制表示中'1'至少有两个 则有 n > 2(i) 如 5(B101) > 4(B100),16(B1000) == 16(B1000) 则要进行'+'运算,反之亦然 */ { printf("+"); f(n ^= (1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3