110,537
社区成员
发帖
与我相关
我的任务
分享
int i = 0;
while(i<32){
if(n != ((n<<i)>>i)){
printf(i);
}
i++;
n = (n<<i)>>i;
}
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
if(argc != 2)
return 1;
int i;
int num = atoi(argv[1]);
printf("number %d = ",num);
for(i = 0;i < 32;i++) {
if((num >> i) & 0x00000001)
printf("2^%d + ",i);
}
putchar('\n');
}
DECLARE
TempValue NUMBER(10);
i number(10);
BEGIN
TempValue:=67601;
i:=1;
while TempValue>0 loop
if TempValue mod 2 =1 then
dbms_output.put_line(i-1);
end if;
i := i + 1;
TempValue := (TempValue - TempValue mod 2)/2;
end loop;
END;
var v = 67601;
var s = Convert.ToString(v, 2);
for (int i=s.Length-1, n=0; i>=0; i--, n++)
{
if(s[i] == '1') Console.Write("{0} ", n);
}
private static IEnumerable<int> N进制(int n, int toBase)
{
var cnt = 0;
begin:
if (n == 0)
yield break;
if (n % toBase == 1)
yield return cnt;
n /= toBase;
++cnt;
goto begin;
}
private static IEnumerable<int> N进制(int n, int toBase)
{
var cnt = 0;
begin:
if (n % toBase == 1)
yield return cnt;
n /= toBase;
++cnt;
goto begin;
}
例如可以写foreach (var x in N进制(67601, 3))
Console.WriteLine(x);