简介
Coddy 数学谜题 课程的第 18 课,共 20 课。
二进制数是用二进制计数系统或二进制数字系统表示的数字,这是一种数学表示方法,只使用两个符号:通常是“0”(零)和“1”(一)。[摘自维基百科,自由的百科全书]
这些记法:110=12,210=102,310=112,410=1002,表示十进制计数系统(基数为 10 的计数系统)中的数字 1、2、3 和 4,分别等于二进制数字系统中的 1、10、11 和 100。
二进制计数与其他进制的计数相似。从一位数开始,按符号递增的顺序逐个计数。
要将一个十进制整数转换为对应的二进制数,需要将这个数除以 2。余数是最低有效位(最右边的一位)。再将商除以 2,所得余数成为下一位最低有效位。重复这个过程,直到商为 1。余数序列(包括最后的商 1)构成二进制值,因为除以 2 时,每个余数都只能是 0 或 1。例如,510表示为 1012,因为:
5 除以 2,商为 2,余数为 1:5:2 = 2(1)。因此,最低有效位是 1。接着,2:2=1(0)。因此,下一位最低有效位是 0,再下一位是 1。
挑战
简单编写一个函数 calcBinary,接收一个十进制整数,并以字符串形式返回对应的二进制数。
试着不使用内置函数来完成。
亲手试试
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int n;
if (scanf("%d", &n) != 1) n = 0;
char* r = calcBinary(n);
printf("%s\n", r);
return 0;
}
数学谜题中的所有课
自己练习: C 在线编译器