C输出打印正整数的二进制数
- 定义一个方法 例如
printBinary
, 这个方法需要传入两个参数, 一个是我要转成二进制的十进制整数,一个是准备要打印的二进制数的长度-
void printBinary(unsigned n, int len) {}
-
- 编写方法体
-
void printBinary(unsigned n, int len) { for (int i = len - 1; i != -1; i--) printf("%d", (n & (1 << i)) >> i ); putc('\n', stdout); }
-
这里的想法很简单,通过遍历来逐个打印,数字的最右是最低位,最先打印的是高位。所以需要从最高位开始遍历。
每次需要准备一个1,而这个1变为二进制来进行移动,要移动到我们所要输出的二进制的位置,通过与需要输出的指进行按位与操作就可以知道这个位置下的二进制值是1还是0,因为按位与只有在两个数均为1的前提下才为1,否则为0,这里按位与之后还需要移动回最右的位置,这样就能拿到移动所在位置的数是0还是1。
上面的代码仅是一种写法,并不唯一