Нега-позиционная система счисленияНе́га-позицио́нная систе́ма счисле́ния — позиционная система счисления с отрицательным основанием. Особенностью таких систем является отсутствие знака перед отрицательными числами и, следовательно, отсутствие правил знаков. Всякое число любой из нега-позиционных систем, отличное от , с нечётным числом цифр — положительно, а с чётным числом цифр — отрицательно. Часто число в нега-позиционной системе требует для записи на одну цифру больше, чем то же число в системе с положительным основанием. Обычно название нега-позиционной системы состоит из приставки нега- и названия соответствующей системы счисления с положительным основанием; например, нега-десятичная (b = −10), нега-троичная (b = −3), нега-двоичная (b = −2) и другие. Примеры
ИсторияНега-позиционные системы счисления были впервые предложены Витторио Грюнвальдом[англ.] в его работе «Giornale di Matematiche di Battaglini» 23 (стр. 203—221), опубликованной в 1885 году. Грюнвальд описал алгоритмы сложения, вычитания, умножения, деления, извлечения корня, признаков делимости и преобразования систем счисления. ИспользованиеЧисло x в нега-позиционной системе счисления с основанием представляется в виде линейной комбинации степеней числа :
где — это целые числа, называемые цифрами и удовлетворяющие неравенству , — порядковый номер разряда начиная с нулевого, n — число разрядов. Каждая степень в такой записи называется разрядом, старшинство разрядов и соответствующих им цифр определяется значением показателя . Обычно для ненулевого числа требуют, чтобы старшая цифра в b-ричном представлении была также ненулевой. Нега-позиционные системы сравнимы с знако-разрядными системами счисления, такими как симметричная троичная система, где основание системы положительно, однако цифры могут принимать отрицательные значения из некого промежутка. Некоторые числа обладают одним и тем же представлением в системах счисления с основанием и (позиционных и соответствующим им нега-позиционных). К примеру, числа от 100 до 109 одинаково записываются в десятичной и нега-десятичных системах счисления. Аналогично: То есть число 17 имеет одинаковое представление в двоичной и нега-двоичной системах счисления — . Представления чисел от −12 до 12 в различных системах счисления:
Перевод в нега-позиционные системыНега-позиционное представление числа может быть получено последовательными делениями с остатком исходного числа на (то есть на основание нега-позиционной системы) и записью подряд остатков начиная с последнего. Заметим, что если , с остатком , то . Пример перевода в нега-троичную систему: Следовательно, нега-троичным представлением числа 146(10) является 21102(-3). Реализация на C#: // Нега-троичная
static string negaternary(int value)
{
string result = string.Empty;
do
{
int remainder = value % -3;
value = value / -3;
if (remainder < 0)
{
remainder += 3;
value += 1;
}
result = remainder.ToString() + result;
} while (value != 0);
return result;
}
Реализация на C++: // Нега-двоичная
#include <iostream>
using namespace std;
int main()
{
int value,rem;
string res="";
cin>>value;
do
{
rem=value%-2;
value=value/-2;
if(rem<0)
{
rem=rem+2;
value++;
}
if(rem==1) res="1"+res;
if(rem==0) res="0"+res;
}
while(value!=0);
cout<<res;
}
Реализация на Python 3.8: # Нега-двоичная
res = ""
value = int(input())
while True:
rem = value % -2
value = value // -2
if rem < 0:
rem = rem + 2
value = value + 1
if rem == 1:
res = "1" + res
if rem == 0:
res = "0" + res
if value == 0:
break
print(res)
Дроби
Арифметические операцииСложениеСложение столбиком надо делать как в обычной системе, например если вы хотите сложить в нега-десятичной системе счисления, то это надо делать как в десятичной системе счисления. Но с одним исключением: если при сложении в каком-либо разряде получается число не менее 10, то надо в этот разряд записать число единиц из полученного числа а из соседнего слева разряда вычесть единицу. Если слева нет разряда, то приписать слева 19 (для нега-десятичной, для нега-троичной 12, для нега-двоичной 11). Например (нега-десятичная система): · · 18115 + 5487 3582 5+7=12, 2 в разряд единиц, из соседнего слева вычитаем единицу. 8+5=13, 3 в разряд минус тысяч, из соседнего слева вычитаем единицу. · 72 + 49 1901 2+9=11, 1 в разряд единиц, из соседнего слева вычитаем единицу. 6+4=10, 0 в разряд минус десятков, соседнего слева — нет, приписываем слева 19. ВычитаниеВычитание столбиком надо делать как в обычной системе, например если вы хотите вычесть в нега-десятичной системе счисления (НДСС), то это надо делать как в десятичной системе счисления. Но с одним исключением: если при вычитании в каком-либо разряде надо занять десяток, то вы это и делаете, но из соседнего слева разряда вы не вычитаете единицу, а наоборот прибавляете её туда. Если слева нет разряда, то приписать слева 1. Например (нега-десятичная система): 52 − 39 ?? 2−9 нельзя, занимаем единицу. 2 12 − − 9 9 ?? 3 12−9=3, 3 в разряд единиц, в соседний слева разряд прибавляем единицу (52−12= 52−2+10 =50+10=60). 6−3=3. 52 52 60 60 00 − − − − − 39 30 30 30 00 ?? ?3 ?3 ?3 33 52 в НДСС = −4810. 39 в НДСС = −2110. 33 в НДСС = −2710. −4810 − (−2110) = −2710. УмножениеТаблицы умноженияТаблица умножения в нега-двоичной системе счисления
Таблица умножения в нега-троичной системе счисления
Таблица умножения в нега-десятичной системе счисления
См. также
Information related to Нега-позиционная система счисления |