next-markdown

This commit is contained in:
2025-10-27 18:01:51 +05:00
parent dd1fa3f7fc
commit 81c60f2c70
4 changed files with 129 additions and 60 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -1,6 +1,6 @@
import flet as ft import flet as ft
import designer as ds 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): class Main_page(ft.View):
def __init__(self, page): def __init__(self, page):
@@ -23,6 +23,8 @@ class Main_page(ft.View):
octogon_data5.Button_text_data(), octogon_data5.Button_text_data(),
octogon_calculeator6.Button_octogon_calculator(), octogon_calculeator6.Button_octogon_calculator(),
sedecim_data7.Button_sedecim_data(), sedecim_data7.Button_sedecim_data(),
sedecim_calculeator8.Button_sedecim_calculator(),
pentecostal_system9.Button_binary_data(),
ft.Container( ft.Container(
bgcolor="#280A3F", bgcolor="#280A3F",
expand=True, expand=True,

View File

@@ -13,73 +13,134 @@ class Button_binary_data(ft.CupertinoButton):
def test_data(e, self): def test_data(e, self):
md1=""" md1="""
Двоичная система счисления — это система, в которой используются только две цифры: 0 и 1. **N-мерные системы счисления**
Двои́чная систе́ма счисле́ния — позиционная система счисления с основанием 2. Благодаря непосредственной реализации в цифровых электронных схемах на логических вентилях, двоичная система используется практически во всех современных компьютерах и прочих вычислительных электронных устройствах.
Компьютеры хранят отрицательные числа иначе, чем положительные, из-за особенностей двоичной системы и конструкции процессоров. Вот основные способы: **Расширение позиционных систем в многомерное пространство**
1. Прямой код (очень редко используется) Основная концепция:
Вместо линейной цепочки разрядов используется n-мерная решётка, где каждая ячейка имеет свои координаты и вес.
Старший бит (самый левый) делает число отрицательным: **Математическое представление:**
Например, для 8 бит:
00010101 — это +21
10010101 — это -21
Недостатки: две разные записи нуля (положительный и отрицательный), сложнее реализовать арифметику.
2. Обратный код (редко используется) Для 2D системы счисления:
N = ΣΣ a_ij × b₁ⁱ × b₂ʲ
Если число отрицательное, инвертируются все биты, кроме знакового: Для 3D системы счисления:
+21: 00010101 N = ΣΣΣ a_ijk × b₁ⁱ × b₂ʲ × b₃ᵏ
-21: 11101010
Недостатки: две записи нуля, сложная арифметика.
3. Дополнительный код (почти всегда используется) Общая формула для n-мерной системы:
N = Σ...Σ a_i₁...iₙ × b₁ⁱ¹ × b₂ⁱ² × ... × bₙⁱⁿ
Для отрицательного числа инвертируются все биты и прибавляется единица: где:
+21: 00010101 - a_i₁...iₙ - цифра в позиции (i₁,...,iₙ)
-21: инвертируем: 11101010, прибавляем 1: 11101011 - b₁,...,bₙ - основания по каждому измерению
Преимущества: только одна запись нуля, простая арифметика (сложение и вычитание одинаковы для положительных и отрицательных чисел). - i₁,...,iₙ - координаты в n-мерном пространстве
Почему люди пишут числа как "-10101" **Пример 2D системы:**
Запись -10101 — это просто привычный способ обозначения отрицательных чисел в десятичной или любой другой системе счисления. Основания: b₁ = 10 (по горизонтали), b₂ = 8 (по вертикали)
В памяти компьютера знак не хранится отдельно, а закодирован в битах (обычно старший бит — знаковый).
Для человека запись с минусом интуитивно понятна, для компьютера — это набор битов, интерпретируемый по правилам (обычно дополнительного кода).
Другие тонкости Числовая матрица:
[3 5]
[2 7]
Знаковый и беззнаковый типы: Расчёт:
Например, в языке C/C++ есть int (знаковый) и unsigned int (беззнаковый). 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 битах:
беззнаковый: 0..255
знаковый (доп. код): -128..127
Пример (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 бит). md2="""
**Сборка 60-мерной системы счисления**
Практические рекомендации **1. Определение структуры:**
- 60 независимых измерений (осей)
- Каждое измерение имеет своё основание b₁, b₂, ..., b₆₀
- Пример оснований: [2, 3, 5, 7, 11, ..., 293] (простые числа)
- Если хотите работать с отрицательными целыми в двоичной системе — вводите строку ровно N бит (например, 16). Старший бит будет определять знак. **2. Математическая модель:**
- Для дробных значений используйте запятую и при необходимости ставьте знак '-' перед всем числом: -101,01. 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( right_column.controls=[ ft.Container(
@@ -92,14 +153,20 @@ class Button_binary_data(ft.CupertinoButton):
expand=True, expand=True,
horizontal_alignment=ft.CrossAxisAlignment.CENTER, horizontal_alignment=ft.CrossAxisAlignment.CENTER,
controls=[ controls=[
ft.Text(md1, size=16, color="white"), ft.Row(
ft.Text("Перевод из десятичной системы в двоичную:", size=16, color="white"), expand=True,
ft.Container( controls=[
bgcolor="#000000", ft.Markdown(md1, expand=True),
content=ft.Image(src="./Система счисления 1.jpg", expand=True),
border_radius=10, ],
width=350,
height=300, ),
ft.Row(
expand=True,
controls=[
ft.Markdown(md2, expand=True),
],
), ),
ft.Text("Перевод обратно в десятичную систему:", size=16, color="white"), ft.Text("Перевод обратно в десятичную систему:", size=16, color="white"),
ft.Container( ft.Container(

View File

@@ -1,7 +1,7 @@
from designer import right_column from designer import right_column
import flet as ft import flet as ft
class Button_binary_calculator(ft.CupertinoButton): class Button_sedecim_calculator(ft.CupertinoButton):
def __init__(self, text: str = "Двоичный калькулятор"): def __init__(self, text: str = "Двоичный калькулятор"):
self.result_left = ft.Text(value="0", size=30, width=300) self.result_left = ft.Text(value="0", size=30, width=300)
self.result_right = ft.Text(value="0", size=30, width=300) self.result_right = ft.Text(value="0", size=30, width=300)