| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > 120 в виде 1111000 |
| Автор: new_web 13.2.2008, 20:32 |
| Как представить компилятору число в виде едениц и нулей чтобы он понял что, например, 1111000 это не один миллион стоодиннадцать тысяч, а именно 120 в его двоичном представлении? Builder 6 |
| Автор: susanin 13.2.2008, 20:39 |
| я конечно не уверен, потому что сам еще новичок...но боюсь что никак нельзя....если только функцией перевести введенное число из 2 сс в 10 сс |
| Автор: jonie 13.2.2008, 20:40 |
| компилятор не умеет понимать 2-ый формат. Используйте 16,8,10 основания СС. Перевести не составлят труда даже в уме. |
| Автор: Fazil6 13.2.2008, 21:06 | ||
|
| Автор: PPS05 13.2.2008, 23:51 | ||
Взято с rsdn.ru:
|
| Автор: new_web 14.2.2008, 00:13 |
| Fazil6, Спасибо, Ваш пример понятен, попробую его приделать к своим нуждам! PPS05, к сожалению, мне пока многое непонятно((( Плохо, что компилятор не понимает двоичный код, может, на asm заплатку сделать, он понимает двичныый код, жаль. я асма не понимаю... |
| Автор: bsa 14.2.2008, 11:44 | ||
А чего тут непонятного? Он написал макрос, который из "двоичного" числа, делает "10-е", попутно преобразовывая его в восьмиричное (0##x - дописывание 0 перед значением x). * - умножение / - деление % - остаток от деления >> - двоичный сдвиг вправо на n бит (считай деление на 2 в степени n) Что непонятного? |
| Автор: jonie 14.2.2008, 15:03 |
| имхо один фиг не ответ на вопрос) просили компилятор как заставить как я понимаю хочется чтобы в исходниках было 001001010b и компилятор это понял бы. или у меня проблемы с русским языком в части понимания смысла ? |
| Автор: PPS05 14.2.2008, 15:35 |
Мой вариант и заставит компилятор. |
| Автор: new_web 14.2.2008, 19:23 | ||
| Спасибо всем, за столь деталные ответы! Я конечно, постараюсь в целях самообразования понять всё, да и куда я денусь? Я очень рад, что задал этот вопрос, так как много понял из механизмов, как вообще работает компьютер. Бинарное число мне было нужно для того. чтобы увидеть состояние регистров, точнее. чтобы их сравнить. Побродив немного в нетрях своих мозгов. я понял. что мне бинарное число и не нужно вовсе, (но, если бы я не попробовал код Fazil6, то я бы ничего не понял))), так как я могу работать с любым представлением числа! Мне нужно было знать, на каком регистре получается несовпадение битов числа
Но, я бы до этого никогда не додумался. если бы Вы все мне не помогли! Поскольку. я до конца не разобрался во всём. что касается перевода чисел (нехватает времени((, то вопрос пока оставляю нерёшённым. так как на эту тему можно ещё узнать много интересного. |
| Автор: jonie 14.2.2008, 23:39 |
| PPS05 ну незнаю) имхо число и код вычисления что будет записан компилятором (а мож и не будет - смотря какой оптимизатор) не одно и тоже. Это предлагаю закрыть. По теме : "что касается перевода чисел " - читай школьную информатику, тут все в 100% совпадает с ней. перевод из любой системы в 2-ую - деление на 2, обратно - умножение 8-) |
| Автор: TeAnton 15.2.2008, 10:35 |
| Советую почитать Википедию по запросам: "Система счисления", и "Позиционная система счисления". |
| Автор: new_web 19.2.2008, 11:13 | ||
Мда, такой фразой можно череп раздробить Спасибо всем за советы и помощь. но всё-таки кое-чего понять не могу... Здесь я задал вопросhttp://forum.vingrad.ru/forum/topic-194245/unread-1/anchor-entry1417608/30.html, насчёт управления портом LTP, и благодаря помощи добился своего, и сделал програмку, которая управляет портами. http://new-web.ucoz.ua/ltp_demo.rar Не понимаю. почему я записываю в порт Data 127, то читаю из порта 127 - а когда 128, - в порту окажется минус 128 тоесть 128=-128; 129=-127; ...и так дальше! В чём тут проблема? я неправильно что-то не то написал в классах, или, попросту иначе не получится? Я пробовал всякими способами, но 127-это 127, а 128 это -128 После упорных поисков, я решил. что мне неважно, запишется там 255 или -1, так как задача была поменять напряжение на любых выводах порта Data и Control LTP, и задача быал решена. Но, интересно, почему так получается, и можно ли привести это число в положительное? |
| Автор: Fazil6 19.2.2008, 11:32 | ||
скорее всего у тебя считывается в переменную типа signed char , а максимальное его значение 127, поэтому и получаешь, используй unsigned char и будут положительные значения до 255 |
| Автор: new_web 20.2.2008, 04:39 |
| Да! Спасибо, я почти додумался сам, я пробовал unsigned int по незнанию.. Теперь многое прояснилось! |
| Автор: phprus 20.2.2008, 20:40 | ||
Если вам не трудно, то не могли бы вы привести пример такого преобразования на шаблонах, хотябы для однобайтных констант, а то я никак не могу придумать как можно использовать шаблоны в этой задаче. |
| Автор: phprus 21.2.2008, 18:22 | ||
| Придумал. Вот код на шаблонах для двоичных констант и за одно шаблон для возведения целого числа в целую, положительную степень:
|
| Автор: BIV 22.9.2008, 23:09 | ||
А не проще по другому?
|