Menu
Coddy logo textTech

מבוא

שיעור 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). לכן הסיבית הבאה הפחות משמעותית היא אפס, והבאה אחריה היא אחת.

 

challenge icon

אתגר

קל

כתבו פונקציה 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;
}

כל השיעורים ביחידה חידות מתמטיות

7הכפולה המשותפת הקטנה ביותר

מבואבעיה

10פלינדרומים

מבואאלגוריתם 196

2כפולות של 3 או 5

בעיהפתרון ללא לולאות

5משוואה דיופנטית

מבואבעיה

6המחלק המשותף הגדול ביותר

מבואהאלגוריתם האוקלידיפונקציית פי

9מספרים בינאריים

מבוא

תרגלו בעצמכם: קומפיילר C אונליין