Перейти к содержимому

Как перевести отрицательное число в другую систему счисления

  • автор:

Как перевести отрицательное число в двоичную систему счисления?

А смотря как в данной вычислительной системе принято отображение отрицательных чисел. Обычно для этого достаточно первый «знаковый» бит выставить в 1.

Остальные ответы
Пуск — Все программы — Стандартные — Калькулятор (вид — инженерный)
zaiyaГуру (3116) 15 лет назад

Калькулятор Windows не умеет работать с отрицательными двоичными числами
Запускаем виндовский калькулятор, ставим галочку Bin, вводим 11111011, ставим галочку Dec, и . видим на экране 251 . Что-то тут не так! В душу вкладывается сомнение: а не гон ли всё это? Устроим ещё одну проверку: берём (-5), ставим галочку Bin, и видим число : 1111111111111111111111111111011 ? Похоже, но не то! (Кстати попробуйте перевести его обратно в Dec :)). Вся фишка заключается в том, что виндовский калькулятор: не умеет преобразовывать отрицательные Bin в Dec.
Об числе 1111111111111111111111111111011b : всё дело втом, что когда мы вычитали из 000b 001b, то мы не учли одной очень нужной вещи: к числу можно добавить любое количество нулей слева!! Т.е. 0 у калькулятора выглядит так: 00000000000000000000000000000000b :)) Вот и весь прикол! В (-1) на самом деле бесконечное множество 1.

Андрей ГуменюкЗнаток (385) 9 лет назад
Артём ЗаборщиковУченик (155) 3 года назад
1. Не у всех Windows, АУУУ
2. Спрашивают о РУЧНОМ преобразовании

инвертировать положительное и прибавить единицу

(наппример, -1)
— 00000001 => 11111110 +1 = 11111111

-5 => 00000101 => 11111010 +1 = 11111011
а впрочем надо уточнять способ кодирования

°¤°¤SmiLe¤°¤°Профи (849) 15 лет назад
вот мне нужно число -60 Это как будет?
Андрей ГуменюкЗнаток (385) 9 лет назад

выше пост.. . прошли вчера 🙂 вида x.y. x=1 отриц x=0 полож. y = семизначное число двоичной системы. . например 1.0011101

т. е. есть число -12 то это 1.0001100

просто добавляется знаковый разряд, если указывать машинный код. а так ставится знак — а число по модулю

Перевод 103.63 из десятичной в восьмиричную систему счисления

Онлайн калькулятор перевода чисел в любую систему счисления, двоичную, десятичную, шестнадцатеричную и др. Расчет онлайн в любой системе счисления. Поддержка отрицательных чисел, дробных чисел а также чисел с плавающей запятой.

  • Калькулятор
  • Инструкция
  • История
  • Сообщить о проблеме
  1. Введите число которое надо перевести.
  2. Укажите его систему счисления.
  3. Укажите в какую систему счисления переводить.
  4. Нажмите кнопку «Перевести».

Калькулятор перевода чисел имеет одно поле для ввода. В это поле необходимо ввести число которое Вы хотите перевести.

После этого Вам обязательно нужно указать в какой системе счисления Вы его ввели. Для этого под полем ввода есть графа «Его система счисления».

Если Вы не нашли своей системы, то выберите графу «другая» и появится поле ввода . В это поле необходимо вписать основание системы одним числом без пробелов.
Далее необходимо выбрать в какую систему хотите перевести данное число. Если Вы опять не нашли нужной системы то введите ее в графе «другая».

После нажмите кнопку «ПЕРЕВЕСТИ» и результат появится в соответствующем поле. Если Вы хотите получить подробный ход решения, то нажмите на соответствующую ссылку.

Последние 20 расчетов на этом калькуляторе

  1. Перевод 320 из восьмиричной в 7-ричную систему счисления
  2. Перевод 3B6.54 из шестнадцатиричной в десятичную систему счисления
  3. Перевод 102.04 из восьмиричной в десятичную систему счисления
  4. Перевод -718180.005757 из десятичной в двоичную систему счисления
  5. Перевод 1222101 из троичной в десятичную систему счисления
  6. Перевод -93845 из десятичной в двоичную систему счисления
  7. Перевод 110.110 из десятичной в двоичную систему счисления
  8. Перевод 42.27 из 9-ричной в троичную систему счисления
  9. Перевод ffa0 из шестнадцатиричной в двоичную систему счисления
  10. Перевод 110.647 из десятичной в двоичную систему счисления
  11. Перевод 1111111110011111 из двоичной в шестнадцатиричную систему счисления
  12. Перевод 7045 из восьмиричной в двоичную систему счисления
  13. Перевод -124 из десятичной в восьмиричную систему счисления
  14. Перевод 10100000100011 из двоичной в двоичную систему счисления
  15. Перевод 67713 из 8-ричной в десятичную систему счисления
  16. Перевод 367.3125 из восьмиричной в троичную систему счисления
  17. Перевод 67712 из 8-ричной в десятичную систему счисления
  18. Перевод 2147483648 из десятичной в троичную систему счисления
  19. Перевод 56.25 из десятичной в двоичную систему счисления
  20. Перевод 56.25 из десятичной в двоичную систему счисления

Сообщите нам о возникшей проблеме в результате расчета на этом калькуляторе.

После проведения расчета нажмите на кнопочку ‘Расчет не верен’ если Вы обнаружили ошибку. Или нажмите ‘расчет верный’ если ошибок нет.

Научиться переводить число из одной системы счисления в другую очень просто.

Любое число может быть легко переведено в десятичную систему по следующему алгоритму:

Каждая цифра числа должна быть умножена на основание системы счисления этого числа возведенное в степень равное позиции текущей цифры в числе справа налево, причём счёт начинается с 0.

Как перевести десятичное отрицательное число в двоичное?

Как это реализовать ?
С положительными все понятно, а что делать с отрицательными не знаю.
Смог только получить обратный код числа ,а вот последний шаг сложение 1 привел меня в тупик.
Видел реализации на PASCAL и C , мне нужно на JAVA

  • Вопрос задан более трёх лет назад
  • 24990 просмотров

2 комментария

Оценить 2 комментария

С этим на фрилансим.ру или к Скуратову.
Иван Грозный @warriorkg Автор вопроса
AVKor: Программу уже написал
Решения вопроса 0
Ответы на вопрос 4

Ivanq

Знаю php, js, html, css

Дано: -128
1. Отрицательное число делаете положительным
-128 => 128 (10000000)
2. Отрицаете все биты
128 (10000000) => 127 (01111111)
3. Прибавляете 1 к получившемуся числу
127 (01111111) => -128 (10000000)

Ответ написан более трёх лет назад
Нравится 2 17 комментариев
Иван Грозный @warriorkg Автор вопроса

В 3 пункте застрял. Ну и как это сделать ? Это не десятичные числа и к ним нет оператора + , которая бы сложила двоичные числа правильно.!

Ivanq

Иван Грозный: берете 127 из предудушего пункта и прибавляете 1 десятично получится 128. Но при переводе в двоичную систему получится -128! Только во 2 пункте нужно либо делать XOR 11111111 если число должно быть одно-байтовым и XOR 1111111111111111 если число должно быть дву-байтовым

stasuss

Ivanq: ему готовый оператор надо походу. волшебный. который ему сложит массивы (или как он там представляет числа бинарные). обленились уже все)))

Ivanq

Curly Brace: да. код нормальный сам писать никто не хочет. зачем тогда тостер создали? )
Иван Грозный @warriorkg Автор вопроса

Ivanq: Curly Brace: Я написал программу. По следующему алгоритму :
1. Ввод числа (отр.)
2. Переводим в положительный ( получаем модуль )
3. Минус 1 от полученного числа
4. Перевод в двоичный вид
5. Инвертирование
И мне не понадобилось ни волшебная палочка, ни сдвиги.

Ivanq

Иван Грозный: Только это не работает для положительных чисел

stasuss

это хак называется

Ivanq

Ivanq

Curly Brace: это не хак, так везде делают. команда neg в ассемблере именно так и работает
Иван Грозный @warriorkg Автор вопроса
Ivanq: Мне и не нужно было для положительных чисел

Ivanq

Иван Грозный: только проверку в коде сделайте! на положительные числа и не числа вообще
Иван Грозный @warriorkg Автор вопроса

Ivanq

Иван Грозный: молодцы! подрастающее поколение! сам не может додуматься для элементарной вещи!
Иван Грозный @warriorkg Автор вопроса
Ivanq: Я как бы сам додумался
Иван Грозный @warriorkg Автор вопроса
Ivanq: Когда писал сделал , я имел ввиду, что уже сделал, а не после того как ты сказал

Ivanq

Ivanq

stasuss

быдлокодер со стажем
а чо там? инвертируешь все биты и прибавляешь к этому числу единицу. так работает «two compliment»
Ответ написан более трёх лет назад
Нравится 1 8 комментариев
Иван Грозный @warriorkg Автор вопроса
Будьте добры! Напишите код для сложения «ДВОИЧНЫХ ЧИСЕЛ В JAVA».

stasuss

Иван Грозный: я не пишу на java) да и вообще не культурно просить написать кого то код. что именно делать надо понятно же, а имплементация это уже важно в первую очередь тебе.

Иван Грозный @warriorkg Автор вопроса

Curly Brace: Тогда не надо умничать, если не знаете ответа. Я знаю, что нужно в конце прибавить 00000001 в случае с 5 — кой. Ну и как это сделать ? Это не десятичные числа и к ним нет оператора + , которая бы сложила двоичные числа правильно.!

stasuss

Иван Грозный: а не надо дерзить вот. сложение в двоичной системе происходит переносом разрядов. если ты не умеешь этого делать, то тебе ваще не стоит лезть в программирование, потому что это вообще в школе изучают на информатике

stasuss

вообще, знаете ли, царь батюшка, процессор использует бинарные числа для расчетов, а все эти красивые int и прочее придуманы для удобства. и то что вы делаете сложение бинарных чисел это лишь упражнение для понимания процессов, которые выполняет процессор (каламбур какой получился) и в языки программирования не имеют таких инстурментов (ни структур данных, ни операторов). не ну ваще есть битовые операторы типа xor или or или and. но базовых операторов сложения и вычитания (а ведь еще деление есть с умножением) нету в языках прогарммирования. эти упражнения и придуманы дабы студент сам писал эти алгоритмы для операций и вникал в эту муть)

Как перевести отрицательное число в другую систему счисления

&copy Кантор И.
e-mail: algolist@mail.ru
web: iliakan@gmail.com

Примеры исходников — ниже. Сначала описывается метод для целых неотрицательных чисел.

Общий принцип 1: чтобы перевести число в некоторую систему счисления с основанием M ( цифрами 0, . M-1 ), иначе говоря, в M-ичную СС, нужно представить его в виде:

C = an * M n + an-1 * M n-1 + . + a1 * M + a0.

a1..n — цифры числа, из соответствующего диапазона. an — первая цифра, a0 — последняя.
Сравните эту запись с представлением числа, например, в десятичной системе.

1. разделить число нацело на M, остаток — a0.
2. взять частное и проделать с ним шаг 1, остаток будет a1.
И так, пока частное не равно 0.

Искомое число будет записано в новой системе счисления полученными цифрами.

Общий принцип 2: Если основание одной системы — степень другого, например, 2 и 16, то перевод можно делать на основании таблицы:
2 -> 16 : собираем с конца числа четверки ( 16 = 2 4 ) чисел, каждая четверка — одна из цифр в 16-ричной с-ме. Пример ниже.

Просто вычисляем C = an * M n + an-1 * M n-1 + . + a1 * M + a0, где М — старое основание. Вычисления, естественно, идут по в новой системе счисления.

Например: из 2 — в 10: 100101 = 1*2 5 + 0*2 4 + 0*2 3 + 1*2 2 + 0*2 1 +1=32+4+1=37.

Вообще говоря, можно сделать много хитрых трюков — в примерах реализаций они есть 🙂

Много вопросов задается относительно дробей и отрицательных чисел.

Отpицательные — модуль числа не меняется при переходе к другой СС, посему: запомнить знак, пpименить стандаpтный метод — поставить знак. Дальше буду говорить уже о положительных числах

Например, перенос в троичном числе запятой с 4-го места от конца — то же, что и умножить его на 3 4

121201,2112 * 3 4 = 1212012112.

После стандаpтной пpоцедуpы с положительными числами поделить на этот множитель получившуюся дробь. Получится периобическая дробь — значит судьба Ваша такая. Помните: в 3-чной системе 1/3 = 0.1, а в десятичной — 0,(3). Неблагодарное это дело — с десятичными дробями оперировать.

Перевод десятичная -> двоичная:

Десятичное число D 1. Делим D на 2. Остаток - B0. 2. Частное снова делим на 2. Остаток - B1. 3. Повтоpяем, пока не полyчим 1/2=0 с остатком 1. Этот последний остаток и есть стаpшая единица. Пpимеp: D=154. 154/2=77, остаток=B0=0< 77/2=38, остаток=B1=1 38/2=19, остаток=B2=0 19/2=9, остаток=B3=1 9/2=4, остаток=B4=1 4/2=2, остаток=B5=0 2/2=1, остаток=B6=0 1/2=0, остаток=B7=1. Итак, 154=10011010.

Перевод 2-ная -> 16-ная.

Пеpевод из двоичной системы исчисления в 16-тиричную осуществляется по таблице для каждых 4-х двоичных единиц:

0000=0 0001=1 0010=2 0011=3
0100=4 0101=5 0110=6 0111=7
1000=8 1001=9 1010=A 1011=B
1100=C 1101=D 1110=E 1111=F

Например:
число 111010110 = 0001'1101'0110 = 1D6

А вот алгоритм "хитрого" перевода со смещением. Работает ну очень быстро.

void DecToBin (long num,char *bin) < int i,j; char tmp[33]; for (i=0; num; num>>=1, i++)tmp[i] = (num&1)?('1'):('0'); for (j=0; j

Перевод 16-ная -> 10-ная

Очень быстрая ассемблерная реализация.

;вход: AL == пеpвый символ (его код) ; AH == втоpой символ ; ;выход: AL == число (байт) ; c2byte proc sub ax,3030h cmp al,9 jbe @cont1 sub al,7 @cont1: cmp ah,9 jbe @cont2 sub ah,7 @cont2: xchg ah,al shl ah,4 add al,ah ret c2byte endp

Перевод 10-ная -> 16-ная.

function dec2hex(value: dword): string[8]; const hexdigit = '0123456789ABCDEF'; begin while value != 0 do begin dec2hex := hexdigit[succ(value and $F)]; value := value shr 4; end; if dec2hex = '' then dec2hex := '0'; end;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *