Здраствуйте, я пишу курсач на с++, и буду очень благодарен если вы мне поможете!
Мне надо перевести число в разные системы счисления, но проблема состоит в том что я не могу перевести минусовое дробное число из десятичной в двуичную и обратно!
Например:
-0,321 в двоичную,
0,321*2=0
0,642*2=1
0,248*2=0
0,568*2=1
.....
Тоесть наше число 0,0101(в двоичной), но как его переделать под минус?
И как минусовое двоичное с точкой перевести в десятичное?
Если не сложно можете написать отрывок из кода на С++, но впринцыпе простого обьяснения будет вполне достаточно!
Примечание:
P.S. Вариант "добавить минус" не подходит!
Примечание:
Тоесть вы предлагаете написать 1,0101 и ето будет перевод с -0,321
Тогда раскажите пожалуйста как перевести 1,321 в двоичную систему, разве ето не будет 1,0101...
Примечание:
с информатикой я знаком просто запутался в переводе с минусом и точкой,
а минус зависит не только от первого бита, а от первого бита в байте!
при одном байте: 10000101 будет -123
при двух : 133(без минуса)
может конечно я и тупой, но если вам не сложно, не могли бы вы обьяснить по подробнее и с примерами?
Примечание:
как вы уже поняли, я пишу курсач.
и если пользователь в двуичном режиме введет: 1,0101
как ему программа должна перевести? 1,325 или -0,325?
или он должен выбрать учитывать знак или нет?
Примечание:
дык, извините но так калькулятор на Windows 7 перевел!
>при одном байте: 10000101 будет -123
>при двух : 133(без минуса)
Примечание:
да, я действительно чушь написал!
тоесть если пользователь ввел 1,0101 ето (-0,325)
если 01,0101 ето 1,325
а если -9,325 то:
-9 в двоичной
9/2=1
4/2=0
2/2=0
1
тоесть 9=1001
минус означает : мы конвертируем биты и добавляем единицу: -9=0110+0001=0111
теперь ставим перед нулём единицу -9=10111
а 0,325 переводим как и в прошлый раз и получается -9,325=10111,0101...
так?
Примечание:
блин, ошибся конвертируем еще 0,0101 -> 0,1010
-9,325=11110111,1010
Так?
я знаю, может я и задолбал, но ответьте пожалуйста правильно ли я понял?
Примечание:
ура!
Чудо свершилось, и я понял))))
а теперь уточняю:
если переводить -9,5
при модуле там: 1001,1 и бесконечное количество нулей
мы можем взять сколько захочем?
тоесть: 1001,100000000
конвертируем, добавляем 1 и дописываем старший знаковый разряд: 10110,01111111111111+1=10110,1000000000000
01001,10000000+10110,10000000=0000000,00000000
сам спросил и сам ответил!
теперь я окончательно понял,вопросов больше нет!
Всем спасибо за помощь! =)
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.