![]() |
|
|
![]()
|
|
| gorillka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Такая проблемка. есть переменная тип unsigned char нужно с прочитать из неё заданный бит. решил делать так:
а=b<<7-1>>7 , 1- это номер бита, то есть сначала сдвигаю налево, потом направо. например b=10101010. Только вот когда я сдвигаю влево (а=b<<7-1) вместо ожидаемого результата a=10000000 получаю а=1010101000000 может я что-то не так делаю... или может есть более простой способ прочитать бит из байта? Добавлено через 4 минуты и 5 секунд пишу на builder 2009. я сначала подумал что переменная типа char не одно байтовая, а двух байтовая (начиная с версии 2009 они там что то намудрили) но такое действие a= b<<15-1, где b=10101010 даёт такой результат: a=101010100000000000000 |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
Когда вы делаете "b<<7-1", то вы выходите за рамки 8-ми бит, поэтому результат преобразовывается до как минимум двухбайтной величины. Да и непонятно зачем вы это делаете
Это сообщение отредактировал(а) UniBomb - 21.2.2011, 10:53 |
|||
|
||||
| gorillka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Большое человеческое спасибо! так работает
|
|||
|
||||
| Nat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.4.2007 Репутация: нет Всего: нет |
Если значение бита необходимо для проверки в if-e, то подойдет и такой код:
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
не много ли лишнего ?
предчувствую вопрос тс: "а откуда взялось 0x4?" |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
Написал как будто прям катастрофа, тысячу строчек кода вместо одной. Я писал так, что бы было похоже на вариант ТС, что бы он понял, а оптимизацией в дальнейшем можно играться сколько угодно. Добавлено через 16 секунд И да, забыл смайл - |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
у Вас а судя по всему не этого типа. |
|||
|
||||
| gorillka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Еще вопросик по битам и байтам если можно
У меня есть число оно очень большое занимает 4 байта можно его как нибудь засунуть в 4 разные переменные (char) а потом обратно склеить |
|||
|
||||
| Nat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.4.2007 Репутация: нет Всего: нет |
Попробуй объединение union
Объединение - частный случай структуры. Может содержать в одной и той же области данных взаимоисключающие данные разных типов. Это сообщение отредактировал(а) Nat - 22.2.2011, 08:51 |
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
Этот вопрос обмусоливался вот в этой теме. Там было предложено много вариантов |
|||
|
||||
| gorillka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Спасибо посмотрю
|
|||
|
||||
| gorillka |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
Посмотрел я что там пишут. ничего не понравилось я сделал так: склейка в одну переменную 4-х байт
вот так обратно разрубаю
помойму так намного проще Это сообщение отредактировал(а) gorillka - 22.2.2011, 14:51 |
||||||
|
|||||||
| Nat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.4.2007 Репутация: нет Всего: нет |
Мсье знает толк в извращениях
|
|||
|
||||
| UniBomb |
|
|||
|
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 3 Всего: 97 |
gorillka, ну коли уж вы не внемли тем советам (например про использование memcpy), то хотя бы поисправляйте "unsigned char a[3];" на "unsigned char a[4];"
|
|||
|
||||
| gorillka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
да с массивом на косячил не давно на Си перешло с паскаля
но это так в мое оправдание |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |