2 / 2 / 0
Регистрация: 24.11.2015
Сообщений: 52
|
||||||
1 | ||||||
Битовые операции с отрицательными числами и QByteArray02.04.2016, 20:07. Показов 1772. Ответов 3
Метки нет (Все метки)
Накидал простенький код для объяснения ситуации.
Есть цикл, в нем счетчик от -512 до 512, с каждой итерации он добавляет одно число в QByteArray и вызывает функцию add(). Функция add достает из этого QByteArray число и выводит в текстовое поле. Так вот, когда счетчик достигает 384, в функции add читается -128. Не могу понять почему. Объясните пожалуйста. Вроде как по логике должно быть все нормально
0
|
02.04.2016, 20:07 | |
Ответы с готовыми решениями:
3
Битовые операции с числами Операции с отрицательными числами Битовые операции с 64 битными числами (STM32) Битовые операции, битовые поля. |
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
||||||
02.04.2016, 21:30 | 2 | |||||
Сообщение было отмечено ___Cepera___ как решение
Решение
А то что когда счетчик достигает 255, функция add() "считает" -1 это не смущает? Или когда счетчик -257 функция "считает" тоже -1? Почему удивляет именно 384 и чем?
1
|
2 / 2 / 0
Регистрация: 24.11.2015
Сообщений: 52
|
|
03.04.2016, 15:31 [ТС] | 3 |
pav1uxa Спасибо за ответ. 384 потому что первое число с которого начиналось не пойми что. Вообще я думал, что QByteArray обрезает лишние биты сам, а тут вон оно что
0
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
|
04.04.2016, 11:38 | 4 |
Он и обрезает, тут дело в другом. Если 384 (0x0180) преобразовать в char, получится -128 (0x80). Это значение и записывается в QByteArray. Далее при битовых операциях оно преобразуется в integer (0xffffff80) ну и так далее. Тут просто нужно понимать системы счисления и битовые операции...
0
|
04.04.2016, 11:38 | |
04.04.2016, 11:38 | |
Помогаю со студенческими работами здесь
4
Битовые последовательности и битовые операции Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число Битовые операции и операции смещения языка С Побитовые операции с QByteArray Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |