ํƒœ๊ทธ ๋ณด๊ด€๋ฌผ: number-formats

number-formats

๋ฒ ์ด์Šค 10์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ ๋ฒ ์ด์Šค๋ฅผ๋ฒ ์ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ˆ˜ํ•™์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ์ˆซ์ž์— ๋ฌด์—‡์ธ์ง€ ์•Œ์•„์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ 6์ด

๋‚˜๋Š” ์–ด๋–ค ๊ธฐ์ดˆ์—์„œ ์–ด๋–ค ๊ธฐ์ดˆ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ˆ˜ํ•™์„ ์กฐ์‚ฌํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌด์—‡๋ณด๋‹ค ๋‚ด ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. mathforum.org์—์„œ ๋‚ด ๋‹ต๋ณ€์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ์„ ์ฐพ์•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํฐ ์ˆซ์ž์—์„œ ์ž‘์€ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‹จ์ˆœํžˆ ์ฒซ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ธฐ๋ณธ ์ˆซ์ž๋กœ ๊ณฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ์ž๋ฆฟ์ˆ˜ ๋ฐ˜๋ณต์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ž‘์€๋ฒ ์ด์Šค์—์„œ ๋” ํฐ๋ฒ ์ด์Šค๋กœ ๋ณ€ํ™˜ ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ๋•Œ ์›ํ•˜๋Š” ๋” ํฐ๋ฒ ์ด์Šค๋ฅผ ๋” ์ž‘์€๋ฒ ์ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ‘ 4์—์„œ ๋ฐ‘ 6์œผ๋กœ ๊ฐ€๋ ค๋ฉด ์ˆซ์ž 6์„ ๋ฐ‘ 4๋ฅผ 12๋กœ ๋ฐ”๊พธ๋ฉด๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํฐ ๊ฒƒ์—์„œ ์ž‘์€ ๊ฒƒ์œผ๋กœ ๋ฐ”๊ฟ€ ๋•Œ์™€ ๋˜‘๊ฐ™์€ ์ผ์„ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์–ด๋ ค์›€์€ ํ•œ ์ˆซ์ž๊ฐ€ ๋‹ค๋ฅธ ์ˆซ์ž์— ๋ฌด์—‡์ธ์ง€ ์•Œ์•„์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ 6์ด 4์— ๋ฌด์—‡์ธ์ง€ ์•Œ์•„์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์Œ์— ํฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๊ฒƒ์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ธฐ๋ณธ ์ „ํ™˜์ด ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ํ•ด๋‹น ์ž‘์—…์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์ดํŠธ์—์„œ 10์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ๋ณ€ํ™˜ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋จผ์ € ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ๊ธฐ๋ณธ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฌด์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์„๊ฐ€๋“ค์€ ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚ด ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด ๋ฌธ์ œ๋Š” ํฐ ์—ผ๊ธฐ๋ฅผ ์ž‘์€ ์—ผ๊ธฐ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ๋‚ด๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ธฐ๋ณธ ๋ฒˆํ˜ธ๋ฅผ ์›ํ•˜๋Š” ๊ธฐ๋ณธ ๋ฒˆํ˜ธ๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ์„ ๋‹ค๋ฅธ ๊ธฐ๋ณธ์œผ๋กœ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ด๋ฏธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชฉ์ ์„ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘ : 10 ์ดํ•˜์˜ ๊ธฐ์ง€์—์„œ 10 ์ดํ•˜์˜ ๋‹ค๋ฅธ ๊ธฐ์ง€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ 10๋ณด๋‹ค ํฐ ๊ธฐ์ง€์—์„œ 10 ์ดํ•˜์˜ ๊ธฐ์ง€๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” 10๋ณด๋‹ค ํฐ ๊ธฐ๋ณธ์—์„œ 10๋ณด๋‹ค ํฐ ๋‹ค๋ฅธ ๊ธฐ๋ณธ์œผ๋กœ ๋ณ€ํ™˜ ํ•  ๋•Œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๋˜๋Š” 10๋ณด๋‹ค ์ž‘์€ ๊ธฐ๋ณธ์—์„œ 10๋ณด๋‹ค ํฐ ๊ธฐ๋ณธ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.



๋‹ต๋ณ€

์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ์งˆ๋ฌธ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์กฐ๊ธˆ๋งŒ ๊ฐ•์˜ํ•˜๋ฉด ์‹ค๋ก€ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฐฐ์šธ ์  ์€ ์ˆซ์ž๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์ˆซ์ž๋Š” ์ถ”์ƒ์  ์ธ ์ˆ˜ํ•™์  ๊ฐ์ฒด ์ธ ๋ฐ˜๋ฉด ์ˆซ์ž ํ‘œํ˜„์€ ๊ตฌ์ฒด์ ์ธ ๊ฒƒ, ์ฆ‰ ์ข…์ด์˜ ์ผ๋ จ์˜ ์‹ฌ๋ณผ (๋˜๋Š” ๊ณ„์‚ฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ๋ จ์˜ ๋น„ํŠธ ๋˜๋Š” ์ˆซ์ž๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋งŒ๋“œ๋Š” ์ผ๋ จ์˜ ์‚ฌ์šด๋“œ)์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์„ ํ˜ผ๋ž€ํ•˜๋ฉด ๊ฒฐ์ฝ” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ญ์ƒ ๊ทธ ์ž๋ฆฌ ํ‘œํ˜„์„. ๋”ฐ๋ผ์„œ ์ˆซ์ž ๊ฐ€ ํ‘œํ˜„ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์˜ฌ๋ฐ”๋ฅธ ์งˆ๋ฌธ์€ โ€œํ•œ๋ฒ ์ด์Šค์—์„œ ๋‹ค๋ฅธ๋ฒ ์ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•โ€์ด ์•„๋‹ˆ๋ผ โ€œ์–ด๋–ค ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง„ ์ž๋ฆฟ์ˆ˜ ๋ฌธ์ž์—ด๋กœ ํ‘œ์‹œ๋˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?โ€์™€ โ€ ์ฃผ์–ด์ง„ ๋ฒˆํ˜ธ โ€œ.

์ž ์ด์ œ ํŒŒ์ด์ฌ์—์„œ ์ˆซ์ž ํ‘œํ˜„์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์™€ ๋ฐ˜๋Œ€์˜ ์ž‘์—…์„์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค. ์ฐธ๊ณ  : ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•  ๋•Œ ํŒŒ์ด์ฌ ์ฝ”์Šค์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค ํ™”๋ฉด์— ์ธ์‡„ ๊ฐ€๋ฒ ์ด์Šค (10)์—์žˆ์–ดํ•˜์ง€๋งŒ ์ˆ˜๊ฐ€์ด๊ฐ€ ์•Š์Šต๋‹ˆ๋‹ค ํ•˜์ง€ ์ปดํ“จํ„ฐ (๊ทธ๋ ‡์ง€ ์•Š์€)๋ฒ ์ด์Šค (10)์— ์ˆซ์ž๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ์‹๊ณผ ๋Š” ๊ด€๋ จ ์ด ์—†์Šต๋‹ˆ๋‹ค .

def toDigits(n, b):
    """Convert a positive number n to its digit representation in base b."""
    digits = []
    while n > 0:
        digits.insert(0, n % b)
        n  = n // b
    return digits

def fromDigits(digits, b):
    """Compute the number given by digits in base b."""
    n = 0
    for d in digits:
        n = b * n + d
    return n

์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜์ž :

>>> toDigits(42, 2)
[1, 0, 1, 0, 1, 0]
>>> toDigits(42, 3)
[1, 1, 2, 0]
>>> fromDigits([1,1,2,0],3)
42

๋ณ€ํ™˜ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฌด์žฅ ํ•œ ๋ฌธ์ œ๋Š” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

def convertBase(digits, b, c):
    """Convert the digits representation of a number from base b to base c."""
    return toDigits(fromDigits(digits, b), c)

์‹œํ—˜:

>>> convertBase([1,1,2,0], 3, 2)
[1, 0, 1, 0, 1, 0]

์ฐธ๊ณ  : ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ 10 ํ‘œํ˜„์„ ํ†ต๊ณผ ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค ! ๊ธฐ๋ณธ ํ‘œํ˜„์„ ์ˆซ์ž ๋กœ ๋ณ€ํ™˜ ํ•œ ๋‹ค์Œ ์ˆซ์ž๋ฅผ ๊ธฐ๋ณธ . ๊ทธ ์ˆซ์ž๋Š” ํ‘œํ˜„ ๋˜์ง€ ์•Š์•˜๋‹ค . (์‹ค์ œ๋กœ ์ปดํ“จํ„ฐ๋Š” ์ปดํ“จํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋“  ํ‘œํ˜„ํ•ด์•ผํ–ˆ์œผ๋ฉฐ ์นฉ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ „๊ธฐ ์‹ ํ˜ธ์™€ ํŽ‘ํ‚ค ํ•œ ๋ฌผ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํ“จํ„ฐ๋ฅผ ํ‘œํ˜„ํ–ˆ์ง€๋งŒ ๋ถ„๋ช…ํžˆ 0๊ณผ 1์€ ์•„๋‹ˆ ์—ˆ์Šต๋‹ˆ๋‹ค.)c

b

c


๋‹ต๋ณ€

๋‚˜๋Š” ์ด๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์™ธ๊ณ„์ธ (์ ์–ด๋„ ๋น„์œ ๋กœ์„œ)๊ณผ ํ† ๋ก ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ •์˜ ๋Š” ๊ธฐ๋ณธ ์˜ ์ˆซ์ž ์ž…๋‹ˆ๋‹ค. ๋Š” ์ˆซ์ž ์˜ ๋ฌธ์ž์—ด ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค .

x

b

x

<b

์˜ˆ์ œ ์ˆซ์ž 10010011011์€ ๋ฐ‘์ด 2 ์ธ ์ˆซ์ž์ด๊ณ , ๋ฌธ์ž์—ด 68416841531์€ ๋ฐ‘์ด 10 ์ธ ์ˆซ์ž์ด๋ฉฐ, BADCAFE๋Š” ๋ฐ‘์ด 16 ์ธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.

์ด์ œ ๋‚˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํ‰์ƒ ๋™์•ˆ ์—์„œ ์ผํ•˜๋„๋ก ๊ฐ€๋ฅด์น˜๋Š” ํ–‰์„ฑ QUUX์—์„œ ์ž๋ž๊ณ  ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ๋‹น์‹ ์„ ๋งŒ๋‚œ๋‹ค๊ณ  ๊ฐ€์ • ํ•ด๋ณด์‹ญ์‹œ์˜ค . ์ˆซ์ž๋ฅผ ๋ณด์—ฌ ์ฃผ๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์„ ํ•ด์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

q

b

์ •์˜ ๋‚˜๋Š” ๋‹ค์Œ ๊ณต์‹์— ์˜ํ•ด ๊ธฐ์ˆ˜ ์ˆ˜๋ฅผ ํ•ด์„ ํ•  ์ˆ˜์žˆ๋‹ค (์ฐธ๊ณ  : ๋Š” ๊ธฐ์ˆ˜ ์˜ ์ˆ˜์ด๋‹ค )

b

b

q

[[ฯต]]=0[[sยฏd]]=[[sยฏ]]ร—b+d

์—ฌ๊ธฐ์„œ ์€ ๋นˆ ๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋‚ด๊ณ  ๋Š” ์ˆซ์ž ๋๋‚˜๋Š” ๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค . ์ด ํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๋Š” ๋‚ด ์ฆ๊ฑฐ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค .

ฯต

sยฏd

d

์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? ๋ฒ ์ด์Šค ์ˆซ์ž๋ฅผ ์ฃผ์—ˆ๊ณ  ์ˆซ์ž๊ฐ€ ์‹ค์ œ๋กœ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์ด์ƒํ•œ ์ฒ ํ•™์—†์ด ๋ฒ ์ด์Šค ๋กœ ํ•ด์„ํ–ˆ์Šต๋‹ˆ๋‹ค .

b

q

ํ‚ค ์ด๊ฒƒ ์˜ ํ•ต์‹ฌ์€ ์™€ ๊ฐ€ ๊ธฐ๋ณธ ์ˆซ์ž ์—์„œ ์ž‘๋™ํ•˜๋Š” ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ˆซ์ž (๋ฌธ์ž์—ด)์— ์žฌ๊ท€ ์ ์œผ๋กœ ์ •์˜ ๋œ ๊ฐ„๋‹จํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค.

ร—

+

q

q

์ „์ฒด์ ์œผ๋กœ ์‹ค์ œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ์ถ”์ƒ์  ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ 13 ์ƒ๋ฌผ (๊ธฐํ˜ธ )์ด๊ณ  ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 7์„ ๋ฐ ์ต์ˆ™ ๊ฐ€์ • ํ•ด ๋ด…์‹œ๋‹ค .

0123456789XYZ

ฮฑฮฒฮณฮดฯฮถฮพ

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹น์‹ ์˜ ์•ŒํŒŒ๋ฒณ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

0ฮฑ1ฮฒ2ฮณ3ฮด4ฯ5ฮถ6ฮพ7ฮฒฮฑ8ฮฒฮฒ9ฮฒฮณXฮฒฮดYฮฒฯZฮฒฮถ

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹น์‹ ์ด base ์—์„œ ์ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ , ๋‹น์‹ ์ด ์“ด ์–ด๋–ค ์ˆซ์ž๊ฐ€ ์–ด๋–ค base 7 ์ˆซ์ž์— ํ•ด๋‹นํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ฮฒฮพ

๋ฌผ๋ฆฌํ•™์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ๊ธฐ๋ณธ ์ƒ์ˆ˜ (์˜ˆ : )์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์„ ํ•ด์„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

60Z8

[[60Z8]]=ฮพ(ฮฒฮพ)3+ฮฑ(ฮฒฮพ)2+ฮฒฮถ(ฮฒฮพ)+ฮฒฮฒ

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋ฅผ ๊ณฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ดˆ๋“ฑํ•™๊ต ๋ฌผ๊ฑด์ž…๋‹ˆ๋‹ค.

ฮฒฮถร—ฮฒฮพ

Quux ๊ณฑ์…ˆํ‘œ

ร—ฮฒฮณฮดฯฮถฮพฮฒฮฒฮณฮดฯฮถฮพฮณฮณฯฮพฮฒฮฒฮฒฮดฮฒฮถฮดฮดฮพฮฒฮณฮฒฮถฮณฮฒฮณฯฯฯฮฒฮฒฮฒฮถฮณฮณฮณฮพฮดฮดฮถฮถฮฒฮดฮณฮฒฮณฮพฮดฯฯฮณฮพฮพฮฒฮถฮณฯฮดฮดฯฮณฮถฮฒฮฒฮฑฮฒฮฑฮณฮฑฮดฮฑฯฮฑฮถฮฑฮพฮฑ

๊ทธ๋ž˜์„œ ์ฐพ์•„ ๋‚ด๊ฐ€ ํ• ์„ :

ฮฒฮถร—ฮฒฮพ

ฮฒฮถร—ฮฒฮพฮพฮณฯฮฒฮถฮดฮฒฮณฮณ

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ฉ€๋ฆฌ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

[[60Z8]]=ฮพ(ฮฒฮพ)3+ฮฑ(ฮฒฮพ)2+ฮฒฮถ(ฮฒฮพ)+ฮฒฮฒ=ฮพ(ฮฒฮพ)3+ฮฑ(ฮฒฮพ)2+ฮดฮฒฮณ+ฮฒฮฒ

์ด์ œ ์ด์ „์— ์–ธ๊ธ‰ ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ฮดฮฒฮณฮฒฮฒฮดฮณฮด

๊ทธ๋ž˜์„œ

[[60Z8]]=ฮพ(ฮฒฮพ)3+ฮฑ(ฮฒฮพ)2+ฮฒฮถ(ฮฒฮพ)+ฮฒฮฒ=ฮพ(ฮฒฮพ)3+ฮฑ(ฮฒฮพ)2+ฮดฮฒฮณ+ฮฒฮฒ=ฮพ(ฮฒฮพ)3+ฮฑ(ฮฒฮพ)2+ฮดฮณฮด

์ด ๋ฐฉ๋ฒ•์„ ๊ณ„์†ํ•˜๋ฉด

[[60Z8]]=ฮถฮดฮพฮณฯ.


์š”์•ฝ : ๊ธฐ๋ณธ ์ž๋ฆฟ์ˆ˜ ๋ฌธ์ž์—ด ์ธก๋ฉด์—์„œ ์ˆซ์ž์— ๋Œ€ํ•œ ์ž์ฒด ๊ฐœ๋…์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์‚ฐ์ˆ  ๊ธฐ๋ณธ ์—ฐ์‚ฐ-๊ธฐ๋ณธ ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋ณธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ๋ณธ ์—์„œ ์ž์ฒด ์‹œ์Šคํ…œ์œผ๋กœ ์ˆซ์ž๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค .b q

q

b

q

๋‹ต๋ณ€

์ด๊ฒƒ์€ Andrej ์ฝ”๋“œ ์˜ ๋ฆฌํŒฉํ† ๋ง (Python 3) ์ผ๋ฟ ์ž…๋‹ˆ๋‹ค. Andrej์˜ ์ฝ”๋“œ ๋ฒˆํ˜ธ๋Š” ์ˆซ์ž ๋ชฉ๋ก (์Šค์นผ๋ผ)์„ ํ†ตํ•ด ํ‘œ์‹œ๋˜๋Š” ๋ฐ˜๋ฉด ๋‹ค์Œ ์ฝ”๋“œ ๋ฒˆํ˜ธ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ฌธ์ž์—ด ์—์„œ ๊ฐ€์ ธ์˜จ ๊ธฐํ˜ธ ๋ชฉ๋ก์„ ํ†ตํ•ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค .

def v2r(n, base): # value to representation
    """Convert a positive number to its digit representation in a custom base."""
    b = len(base)
    digits = ''
    while n > 0:
        digits = base[n % b] + digits
        n  = n // b
    return digits

def r2v(digits, base): # representation to value
    """Compute the number represented by string 'digits' in a custom base."""
    b = len(base)
    n = 0
    for d in digits:
        n = b * n + base[:b].index(d)
    return n

def b2b(digits, base1, base2):
    """Convert the digits representation of a number from base1 to base2."""
    return v2r(r2v(digits, base1), base2)

์‚ฌ์šฉ์ž ์ •์˜ ๊ธฐ์ค€์—์„œ ๊ฐ’์„ ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

>>> v2r(64,'01')
'1000000'
>>> v2r(64,'XY')
'YXXXXXX'
>>> v2r(12340,'ZABCDEFGHI') # decimal base with custom symbols
'ABCDZ'

ํ‘œํ˜„ (์‚ฌ์šฉ์ž ์ •์˜ ๊ธฐ์ค€)์—์„œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

>>> r2v('100','01')
4
>>> r2v('100','0123456789') # standard decimal base
100
>>> r2v('100','01_whatevr') # decimal base with custom symbols
100
>>> r2v('100','0123456789ABCDEF') # standard hexadecimal base
256
>>> r2v('100','01_whatevr-jklmn') # hexadecimal base with custom symbols
256

ํ•œ custome base์—์„œ ๋‹ค๋ฅธ custome base๋กœ ๊ธฐ๋ณธ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

>>> b2b('1120','012','01')
'101010'
>>> b2b('100','01','0123456789')
'4'
>>> b2b('100','0123456789ABCDEF','01')
'100000000'

๋‹ต๋ณ€

๊ธฐ๋ณธ ๋ณ€ํ™˜์˜ ๊ธฐ๋ณธ toDigits()์กฐ์ž‘์€ @AndrejBauer answer ์˜ ์กฐ์ž‘์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ˆซ์ž์˜ ๋‚ด๋ถ€ ํ‘œํ˜„์—์„œ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.์ด ์ˆซ์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ‘ 2 ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์›๋ž˜ ๊ธฐ๋ณธ ํ‘œํ˜„์œผ๋กœ ํ•„์š”ํ•œ ์กฐ์ž‘์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ๋ฐ˜๋ณต์  ์ธ ๋ชจ๋“ˆ๋กœ ๋ถ„ํ•  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค

def convertBase(n,original_base,destination_base):
    digits = []
    while not is_zero(n):
        digits.insert(0,modulo_div(n,original_base,destination_base))
    return digits

๋‚ด๋ถ€ ํ‘œํ˜„์ด ์ˆซ์ž์ด๋ฏ€๋กœ 0์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด specilaised ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๋‹ค

def is_zero(n):
    for d in n:
        if d != 0:
            return False
    return True

๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ํ•™๊ต์—์„œ ๋ฐฐ์šด๋Œ€๋กœ ๋ชฉ์ ์ง€๋ณ„๋กœ ํ‘œ์ค€ ๊ตฌ๋ถ„ ์ธ modulo_div ์—ฐ์‚ฐ์„ ๋งŒ๋“ค์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

def modulo_div(n,original_base,destination_base):
    carry = 0
    for i in range(len(n)):
        d = n[i]
        d+=original_base*carry
        carry = d%destination_base
        d=(d//destination_base)
        n[i] = d
        #print(i,d,carry)
    return carry

์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ฒ€์‚ฌ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค.

print(convertBase([1,1,2,0], 3, 2))
#[1, 0, 1, 0, 1, 0]

print(convertBase([1, 0, 1, 0, 1, 0], 2, 3))
#[1, 1, 2, 0]

๋‹ต๋ณ€

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”์—†๋Š” ๊ธฐ๋ณธ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์–ด๋–ค๋ฒ ์ด์Šค์—์„œ๋ฒ ์ด์Šค 2๋กœ ๋˜๋Š” ๊ทธ ๋ฐ˜๋Œ€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ๋‹ค์Œ ๋จผ์ € ์ฒซ ๋ฒˆ์งธ๋ฒ ์ด์Šค์—์„œ๋ฒ ์ด์Šค 2๋กœ ๋ณ€ํ™˜ ํ•œ ๋‹ค์Œ๋ฒ ์ด์Šค 2์—์„œ ๋‹ค๋ฅธ๋ฒ ์ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ•œ๋ฒ ์ด์Šค์—์„œ ๋‹ค๋ฅธ๋ฒ ์ด์Šค๋กœ ์ปค๋ฒ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2๋Š” ์–ด๋–ค ์—ผ๊ธฐ์—์„œ๋‚˜ ๊ณฑํ•˜๊ฑฐ๋‚˜ ๋‚˜๋ˆ„๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ๊ธฐ์ˆ˜๋ฅผ ๊ธฐ์ˆ˜ 2๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด, ๋‹น์‹ ์ดํ•ด์•ผ ํ•  ์ผ์€ ์–ด๋–ค ์ˆซ์ž์— ๋Œ€ํ•ด์„œ๋„, ๋‹น์‹ ์ด ๊ธฐ์ˆ˜ 2 ํ‘œ๊ธฐ๋ฒ•์„ ์ทจํ•˜๊ณ  0์—์„œ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ๊ฐ ์ˆซ์ž์— ๋Œ€ํ•ด ๊ทธ ์ž๋ฆฌ๊ฐ€ 0์ด๊ณ  ํ•ด๋‹น ์ˆซ์ž๊ฐ€ 1 ์ธ ๊ฒฝ์šฐ 1์„ ๋”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋‘ ๋ฐฐ๋กœ ์ฆ๊ฐ€ํ•˜๋ฉด ํ•ด๋‹น ์ˆซ์ž ์ž์ฒด์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์–ด๋–ค ๋ฐ‘์ˆ˜์— ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ํ•ด๋‹น ๋ฐ‘์ˆ˜์— 2๋ฅผ ๋‚˜๋ˆ„์–ด ๋ชซ๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๋ฉด ๋งˆ์ง€๋ง‰ ์ด์ง„์ˆ˜๋Š” 1์ด๊ณ  ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด ๋งˆ์ง€๋ง‰ ์ด์ง„์ˆ˜๋Š” 0์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ 2๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๋ฉด ๋‘ ๋ฒˆ์งธ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋Š” 1์ด๊ณ  ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด ๋‘ ๋ฒˆ์งธ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋Š” 0์ด๋ฉฐ ๋ชซ์ด 0์ด ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ 2์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ํ•ด๋‹น ๊ธฐ๋ณธ์—์„œ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฐ ์ด์ง„ ์ˆซ์ž์— ๋Œ€ํ•ด ๊ทธ ์ˆซ์ž๊ฐ€ 0์ด๋ฉด ๋‘ ๋ฐฐ ์ˆซ์ž๋ฅผ ๋‘ ๋ฒˆ ๋ˆ„๋ฅธ ๋‹ค์Œ 1์„ ๋‘ ๋ฒˆ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ํ•ด๋‹น ์ˆซ์ž๊ฐ€ 1 ์ธ ๊ฒฝ์šฐ ๋ฐ‘


๋‹ต๋ณ€

์ผ๋ถ€ ์ค‘๊ฐ„๋ฒ ์ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ ๋ฒ ์ด์Šค n์—์„œ๋ฒ ์ด์Šค 10์œผ๋กœ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด,๋ฒ ์ด์Šค n์—์„œ๋ฒ ์ด์Šค 9๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด๋ฒ ์ด์Šค 10์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ "10"์„ "9"๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ธฐ์ง€์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.


๋‹ต๋ณ€