Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Матчасть кодирование в двоичную ситему счисления |
Автор: ErManDir 7.9.2006, 14:45 |
Извиняюсь за глупый вопрос, но что-то инет мне на этот раз не помог, а в хелпе я что-то нифига не разобрался. В общем задача такая: Мне надо составить двоичное число из трех знаков, типа 000 или 010, потом его сконвертнуть в десятиричное и сохранить в базе, ну потом, естественно опять из 10-ти в 2-х и разобрать на биты. Как это сделать? Наверняка двоичную переменную прийдется таскать через string, хотя не уверен. В общем, помогите плиз! |
Автор: Yanis 7.9.2006, 14:49 |
http://forum.vingrad.ru/index.php?showtopic=17463 http://forum.vingrad.ru/index.php?showtopic=37659&view=all Добавлено @ 14:49 ErManDir Внизу страницы ещё ссылки. |
Автор: ErManDir 7.9.2006, 15:16 |
Спасибо за ссылки, но ответьте пожалуйста на вопрос: А встроенных инструментов разве не существует? |
Автор: Yanis 7.9.2006, 15:26 |
Какие ещё инструменты? Есть calc.exe ![]() Есть стандартный класс TBits. Можно заморочиться и написать наследника TByte с нужными функциями. |
Автор: ErManDir 7.9.2006, 15:52 |
Да про TBits я как раз и не понял. Хотя он вроде для того и сушествует. И насчет ссылок. Вторая ссылка утверждает, что: 100101 нумеруем его с хвоста начиная с нуля т.е. 5 4 3 2 1 0 |_|_|_|_|_| 1 0 0 1 0 1 теперь каждую двоичную цифру умножаем на 2 возводим в степень = нумерации и складываем т.е. (2*1)^5+(2*0)^4+(2*0)^3+(2*1)^2+(2*0)^1+(2*1)^0= 32+0+0+4+0+1=37 Но это неправильно... Правильно будет: 1*(2^5)+0*(2^4)+0*(2^3)+1*(2^2)+0*(2^1)+1*(2^0)=32+0+0+4+0+1=37 любое число в степени ноль всегда 1. Так что двоичное число 000, будет как 0+0+1=1, а это не правильно. |
Автор: Yanis 7.9.2006, 16:10 | ||||
Если нужно именно для числе не больше 7, то можно так:
Добавлено @ 16:18
|
Автор: ErManDir 8.9.2006, 04:02 |
Спасибо за пример с TBits. Завтра посмотрю его повнимательнее. |