מבוא
שיעור 18 מתוך 20 בקורס חידות מתמטיות של Coddy.
מספר בינארי הוא מספר המבוטא בשיטת הספירה בבסיס 2 או בשיטת הספירה הבינארית, שיטה לביטוי מתמטי המשתמשת בשני סמלים בלבד: בדרך כלל "0" (אפס) ו־"1" (אחד). [מתוך ויקיפדיה, האנציקלופדיה החופשית]
הסימונים: 110=12, 210=102, 310=112, 410=1002 פירושם שהמספרים 1,2,3 ו־4 בשיטת הספירה העשרונית (שיטת הספירה בבסיס 10) שווים ל־1,10,11 ו־100 בשיטת הספירה הבינארית.
ספירה בינארית דומה לספירה בכל שיטת מספרים אחרת. מתחילים בספרה אחת, ומתקדמים בספירה דרך כל סמל בסדר עולה.
כדי להמיר מספר שלם מבסיס 10 למספר השקול לו בבסיס 2 (בינארי), מחלקים את המספר בשניים. השארית היא הסיבית הפחות משמעותית (הסיבית הימנית ביותר). את המנה מחלקים שוב בשניים; השארית שלה הופכת לסיבית הבאה הפחות משמעותית. חוזרים על התהליך עד שמגיעים למנה של אחת. רצף השאריות (כולל המנה הסופית, שהיא אחת) יוצר את הערך הבינארי, מכיוון שכל שארית חייבת להיות אפס או אחת כשמחלקים בשניים. לדוגמה, 510 מבוטא כ־1012, מכיוון ש:
חמש חלקי שתיים הם 2 ושארית של אחת: 5:2 = 2(1). לכן הסיבית הפחות משמעותית היא אחת. לאחר מכן, 2:2=1(0). לכן הסיבית הבאה הפחות משמעותית היא אפס, והבאה אחריה היא אחת.
אתגר
קלכתבו פונקציה calcBinary שמקבלת מספר שלם בבסיס 10 ומחזירה את המספר הבינארי השקול לו, כמחרוזת.
נסו לעשות זאת בלי להשתמש בפונקציות מובנות
נסו בעצמכם
#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;
}
כל השיעורים ביחידה חידות מתמטיות
1מבוא
חידות מתמטיות9מספרים בינאריים
מבואתרגלו בעצמכם: קומפיילר C אונליין