diff --git a/app/src/assets/Система счисления 8.png b/app/src/assets/Система счисления 8.png new file mode 100644 index 0000000..e00a8b5 Binary files /dev/null and b/app/src/assets/Система счисления 8.png differ diff --git a/app/src/pages/main_page.py b/app/src/pages/main_page.py index b322eac..4b8c172 100644 --- a/app/src/pages/main_page.py +++ b/app/src/pages/main_page.py @@ -1,6 +1,6 @@ import flet as ft import designer as ds -from pages.tabs import start1,calculater2, binary_data3, binary_calculeator4, octogon_data5, octogon_calculeator6, sedecim_data7 +from pages.tabs import start1,calculater2, binary_data3, binary_calculeator4, octogon_data5, octogon_calculeator6, sedecim_data7,sedecim_calculeator8, pentecostal_system9 class Main_page(ft.View): def __init__(self, page): @@ -23,6 +23,8 @@ class Main_page(ft.View): octogon_data5.Button_text_data(), octogon_calculeator6.Button_octogon_calculator(), sedecim_data7.Button_sedecim_data(), + sedecim_calculeator8.Button_sedecim_calculator(), + pentecostal_system9.Button_binary_data(), ft.Container( bgcolor="#280A3F", expand=True, diff --git a/app/src/pages/tabs/pentecostal_system9.py b/app/src/pages/tabs/pentecostal_system9.py index f54c8fd..70a8b48 100644 --- a/app/src/pages/tabs/pentecostal_system9.py +++ b/app/src/pages/tabs/pentecostal_system9.py @@ -13,75 +13,136 @@ class Button_binary_data(ft.CupertinoButton): def test_data(e, self): md1=""" - Двоичная система счисления — это система, в которой используются только две цифры: 0 и 1. - Двои́чная систе́ма счисле́ния — позиционная система счисления с основанием 2. Благодаря непосредственной реализации в цифровых электронных схемах на логических вентилях, двоичная система используется практически во всех современных компьютерах и прочих вычислительных электронных устройствах. + **N-мерные системы счисления** - Компьютеры хранят отрицательные числа иначе, чем положительные, из-за особенностей двоичной системы и конструкции процессоров. Вот основные способы: +**Расширение позиционных систем в многомерное пространство** - 1. Прямой код (очень редко используется) +Основная концепция: +Вместо линейной цепочки разрядов используется n-мерная решётка, где каждая ячейка имеет свои координаты и вес. - Старший бит (самый левый) делает число отрицательным: - Например, для 8 бит: - 00010101 — это +21 - 10010101 — это -21 - Недостатки: две разные записи нуля (положительный и отрицательный), сложнее реализовать арифметику. +**Математическое представление:** - 2. Обратный код (редко используется) +Для 2D системы счисления: +N = ΣΣ a_ij × b₁ⁱ × b₂ʲ - Если число отрицательное, инвертируются все биты, кроме знакового: - +21: 00010101 - -21: 11101010 - Недостатки: две записи нуля, сложная арифметика. +Для 3D системы счисления: +N = ΣΣΣ a_ijk × b₁ⁱ × b₂ʲ × b₃ᵏ - 3. Дополнительный код (почти всегда используется) +Общая формула для n-мерной системы: +N = Σ...Σ a_i₁...iₙ × b₁ⁱ¹ × b₂ⁱ² × ... × bₙⁱⁿ - Для отрицательного числа инвертируются все биты и прибавляется единица: - +21: 00010101 - -21: инвертируем: 11101010, прибавляем 1: 11101011 - Преимущества: только одна запись нуля, простая арифметика (сложение и вычитание одинаковы для положительных и отрицательных чисел). +где: +- a_i₁...iₙ - цифра в позиции (i₁,...,iₙ) +- b₁,...,bₙ - основания по каждому измерению +- i₁,...,iₙ - координаты в n-мерном пространстве - Почему люди пишут числа как "-10101" +**Пример 2D системы:** - Запись -10101 — это просто привычный способ обозначения отрицательных чисел в десятичной или любой другой системе счисления. - В памяти компьютера знак не хранится отдельно, а закодирован в битах (обычно старший бит — знаковый). - Для человека запись с минусом интуитивно понятна, для компьютера — это набор битов, интерпретируемый по правилам (обычно дополнительного кода). +Основания: b₁ = 10 (по горизонтали), b₂ = 8 (по вертикали) - Другие тонкости +Числовая матрица: +[3 5] +[2 7] - Знаковый и беззнаковый типы: - Например, в языке C/C++ есть int (знаковый) и unsigned int (беззнаковый). - Переполнение: - Если сумма двух больших положительных чисел выходит за пределы диапазона типа, возникает переполнение. - Диапазон значений: - В 8 битах: - беззнаковый: 0..255 - знаковый (доп. код): -128..127 +Расчёт: +N = 3×10¹×8¹ + 5×10¹×8⁰ + 2×10⁰×8¹ + 7×10⁰×8⁰ +N = 3×80 + 5×10 + 2×8 + 7×1 +N = 240 + 50 + 16 + 7 = 313 - Пример (8 бит, дополнительный код) +**Преимущества n-мерных систем:** - +5: 00000101 - -5: инвертируем: 11111010, прибавляем 1: 11111011 - Сложение: 00000101 + 11111011 = 00000000 (0), перенос игнорируется +• Компактное представление многомерных данных +• Естественное отображение для изображений, матриц, тензоров +• Эффективные алгоритмы для многомерных преобразований Фурье +• Прямое соответствие структурам данных в машинном обучении +• Упрощённая работа с пространственными данными - Мантиса, запятая и хранение дробных чисел +**Применения:** - Мантиса — это дробная часть числа в позиционной системе. В двоичной мантиса хранится как последовательность битов, где k-й бит дробной части соответствует весу 2^{-k}. +• Обработка изображений (2D системы) +• Научные вычисления с тензорами (3D+ системы) +• Сжатие многомерных данных +• Нейронные сети и глубокое обучение +• Квантовые вычисления (многомерные представления) - Запятая (разделитель) в человеческом вводе обозначает границу между целой частью и мантиссой. Пример: 101,101₂ = 1*2^2 + 0*2^1 + 1*2^0 + 1*2^{-1} + 0*2^{-2} + 1*2^{-3} = 5.625. +**Особенности:** - В реальной памяти компьютера точка (запятая) обычно не хранится как символ. Существует два распространённых способа хранения дробных чисел: - - Fixed-point (fixed Q-format): число хранится как целое, представляющее значение scaled = round(x * 2^{f}), где f — количество бит дробной части. Таким образом все числа интерпретируются как scaled/2^{f}. - - Floating-point (IEEE-754): хранится знак, экспонента и мантисса; формат сложнее, даёт большой диапазон и нормализацию. - - В этом калькуляторе дроби вводятся через запятую и обрабатываются как обычные дробные значения (float) с фиксированной точностью при выводе (frac_precision бит). - - Практические рекомендации - - - Если хотите работать с отрицательными целыми в двоичной системе — вводите строку ровно N бит (например, 16). Старший бит будет определять знак. - - Для дробных значений используйте запятую и при необходимости ставьте знак '-' перед всем числом: -101,01. - - Помните про переполнение: при выводе целого результата в двоичной системе он должен помещаться в выбранную разрядность. +Каждое измерение может иметь своё основание, что позволяет оптимально кодировать различные типы данных в многомерных структурах. """ + md2=""" + **Сборка 60-мерной системы счисления** + +**1. Определение структуры:** +- 60 независимых измерений (осей) +- Каждое измерение имеет своё основание b₁, b₂, ..., b₆₀ +- Пример оснований: [2, 3, 5, 7, 11, ..., 293] (простые числа) + +**2. Математическая модель:** +N = ΣΣ...Σ a_i₁i₂...i₆₀ × b₁ⁱ¹ × b₂ⁱ² × ... × b₆₀ⁱ⁶⁰ + +где: +- a_i₁i₂...i₆₀ - цифра в 60-мерной позиции +- i₁,...,i₆₀ - координаты от 0 до k (зависит от основания) +- b₁,...,b₆₀ - основания каждого измерения + +**3. Практическая реализация:** + +**Шаг 1: Выбор оснований** +b₁ = 2 (измерение 1) +b₂ = 3 (измерение 2) +b₃ = 5 (измерение 3) +... +b₆₀ = 293 (измерение 60) + +**Шаг 2: Представление числа** +Каждое число - это 60-мерный массив: +[координата_1][координата_2]...[координата_60] + +**Шаг 3: Пример вычисления** +Для упрощения возьмём маленькие координаты: + +a₁ = 1, a₂ = 0, a₃ = 2, ..., a₆₀ = 1 + +N = 1×2¹ + 0×3¹ + 2×5¹ + ... + 1×293¹ + +**4. Алгоритм перевода в десятичную:** + +``` +десятичное_число = 0 +для каждого измерения i от 1 до 60: + вес = произведение оснований всех предыдущих измерений + десятичное_число += цифра[i] × вес +``` + +**5. Особенности 60-мерной системы:** + +- **Гиперпространство данных**: Каждая точка в 60-мерном пространстве - уникальное число +- **Гибкость**: Можно использовать разные основания для разных типов данных +- **Сжатие**: Эффективное кодирование сложных структур +- **Вычисления**: Сложение и умножение происходят независимо по каждому измерению + +**6. Области применения:** + +- Квантовые вычисления (60 кубитов) +- Глубокое обучение (нейросети с 60 слоями) +- Криптография (сверхбольшие пространства ключей) +- Научное моделирование (многопараметрические системы) + +**7. Ограничения:** + +- Визуализация невозможна (человек не может представить 60 измерений) +- Вычисления требуют суперкомпьютеров +- Сложность отладки и верификации + +**Простой пример для 3 измерений вместо 60:** +Основания: [2, 3, 5] +Число: [1, 0, 2] +N = 1×(3×5) + 0×(5) + 2×1 = 15 + 0 + 2 = 17 + +В 60-мерном случае принцип тот же, но измерений в 20 раз больше. + """ + right_column.controls=[ ft.Container( bgcolor="#55257D", padding=ft.padding.all(10), @@ -92,14 +153,20 @@ class Button_binary_data(ft.CupertinoButton): expand=True, horizontal_alignment=ft.CrossAxisAlignment.CENTER, controls=[ - ft.Text(md1, size=16, color="white"), - ft.Text("Перевод из десятичной системы в двоичную:", size=16, color="white"), - ft.Container( - bgcolor="#000000", - content=ft.Image(src="./Система счисления 1.jpg", expand=True), - border_radius=10, - width=350, - height=300, + ft.Row( + expand=True, + controls=[ + ft.Markdown(md1, expand=True), + + ], + + ), + ft.Row( + expand=True, + controls=[ + ft.Markdown(md2, expand=True), + ], + ), ft.Text("Перевод обратно в десятичную систему:", size=16, color="white"), ft.Container( diff --git a/app/src/pages/tabs/sedecim_calculeator8.py b/app/src/pages/tabs/sedecim_calculeator8.py index bc4b952..36fac45 100644 --- a/app/src/pages/tabs/sedecim_calculeator8.py +++ b/app/src/pages/tabs/sedecim_calculeator8.py @@ -1,7 +1,7 @@ from designer import right_column import flet as ft -class Button_binary_calculator(ft.CupertinoButton): +class Button_sedecim_calculator(ft.CupertinoButton): def __init__(self, text: str = "Двоичный калькулятор"): self.result_left = ft.Text(value="0", size=30, width=300) self.result_right = ft.Text(value="0", size=30, width=300)