Нега-позиционная система счисления (Uyig-hk[nenkuugx vnvmybg vcnvlyunx)
Не́га-позицио́нная систе́ма счисле́ния — позиционная система счисления с отрицательным основанием. Особенностью таких систем является отсутствие знака перед отрицательными числами и, следовательно, отсутствие правил знаков. Всякое число любой из нега-позиционных систем, отличное от , с нечётным числом цифр — положительно, а с чётным числом цифр — отрицательно. Часто число в нега-позиционной системе требует для записи на одну цифру больше, чем то же число в системе с положительным основанием. Обычно название нега-позиционной системы состоит из приставки нега- и названия соответствующей системы счисления с положительным основанием; например, нега-десятичная (b = −10), нега-троичная (b = −3), нега-двоичная (b = −2) и другие.
Примеры
[править | править код]Нега-позиционная запись Позиционная запись Представление числа 174(-10) 34(10) 1·(-10)2 + 7·(-10)1 + 4·(-10)0 = 100 − 70 + 4 = 34 46(-10) −34(10) 4·(-10)1 + 6·(-10)0 = −40 + 6 = −34 11001(-2) 1001(2) 1·(-2)4 + 1·(-2)3 + 0·(-2)2 + 0·(-2)1 + 1·(-2)0 = 16 − 8 + 1 = 9
История
[править | править код]Нега-позиционные системы счисления были впервые предложены Витторио Грюнвальдом[англ.] в его работе «Giornale di Matematiche di Battaglini» 23 (стр. 203—221), опубликованной в 1885 году. Грюнвальд описал алгоритмы сложения, вычитания, умножения, деления, извлечения корня, признаков делимости и преобразования систем счисления.
Использование
[править | править код]Число x в нега-позиционной системе счисления с основанием представляется в виде линейной комбинации степеней числа :
- ,
где — это целые числа, называемые цифрами и удовлетворяющие неравенству , — порядковый номер разряда начиная с нулевого, n — число разрядов. Каждая степень в такой записи называется разрядом, старшинство разрядов и соответствующих им цифр определяется значением показателя . Обычно для ненулевого числа требуют, чтобы старшая цифра в b-ричном представлении была также ненулевой.
Нега-позиционные системы сравнимы с знако-разрядными системами счисления, такими как симметричная троичная система, где основание системы положительно, однако цифры могут принимать отрицательные значения из некого промежутка.
Некоторые числа обладают одним и тем же представлением в системах счисления с основанием и (позиционных и соответствующим им нега-позиционных). К примеру, числа от 100 до 109 одинаково записываются в десятичной и нега-десятичных системах счисления. Аналогично:
То есть число 17 имеет одинаковое представление в двоичной и нега-двоичной системах счисления — .
Представления чисел от −12 до 12 в различных системах счисления:
Десятичное | Нега-десятичное | Двоичное | Нега-двоичное | Троичное | Нега-троичное |
---|---|---|---|---|---|
-12 | 28 | -1100 | 110100 | -110 | 1210 |
-11 | 29 | -1011 | 110101 | -102 | 1211 |
-10 | 10 | -1010 | 1010 | -101 | 1212 |
-9 | 11 | -1001 | 1011 | -100 | 1200 |
-8 | 12 | -1000 | 1000 | -22 | 1201 |
-7 | 13 | -111 | 1001 | -21 | 1202 |
-6 | 14 | -110 | 1110 | -20 | 20 |
-5 | 15 | -101 | 1111 | -12 | 21 |
-4 | 16 | -100 | 1100 | -11 | 22 |
-3 | 17 | -11 | 1101 | -10 | 10 |
-2 | 18 | -10 | 10 | -2 | 11 |
-1 | 19 | -1 | 11 | -1 | 12 |
0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 2 | 10 | 110 | 2 | 2 |
3 | 3 | 11 | 111 | 10 | 120 |
4 | 4 | 100 | 100 | 11 | 121 |
5 | 5 | 101 | 101 | 12 | 122 |
6 | 6 | 110 | 11010 | 20 | 110 |
7 | 7 | 111 | 11011 | 21 | 111 |
8 | 8 | 1000 | 11000 | 22 | 112 |
9 | 9 | 1001 | 11001 | 100 | 100 |
10 | 190 | 1010 | 11110 | 101 | 101 |
11 | 191 | 1011 | 11111 | 102 | 102 |
12 | 192 | 1100 | 11100 | 110 | 220 |
Перевод в нега-позиционные системы
[править | править код]Нега-позиционное представление числа может быть получено последовательными делениями с остатком исходного числа на (то есть на основание нега-позиционной системы) и записью подряд остатков начиная с последнего. Заметим, что если , с остатком , то . Пример перевода в нега-троичную систему:
Следовательно, нега-троичным представлением числа 146(10) является 21102(-3).
// Нега-троичная
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;
}
// Нега-двоичная
#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;
}
# Нега-двоичная
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.
Умножение
[править | править код]Таблицы умножения
[править | править код]× | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
2 | 0 | 2 | 121 |
---|---|---|---|
1 | 0 | 1 | 2 |
0 | 0 | 0 | 0 |
х | 0 | 1 | 2 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
2 | 4 | 6 | 8 | 190 | 192 | 194 | 196 | 198 |
3 | 6 | 9 | 192 | 195 | 198 | 181 | 184 | 187 |
4 | 8 | 192 | 196 | 180 | 184 | 188 | 172 | 176 |
5 | 190 | 195 | 180 | 185 | 170 | 175 | 160 | 165 |
6 | 192 | 198 | 184 | 170 | 176 | 162 | 168 | 154 |
7 | 194 | 181 | 188 | 175 | 162 | 169 | 156 | 143 |
8 | 196 | 184 | 172 | 160 | 168 | 156 | 144 | 132 |
9 | 198 | 187 | 176 | 165 | 154 | 143 | 132 | 121 |
См. также
[править | править код]![]() | В статье не хватает ссылок на источники (см. рекомендации по поиску). |