| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Побитовые операции |
| Автор: inside_pointer 11.3.2008, 04:15 | ||
| Описание темы не пишу, потому что оно сканирует форум и выключает все окна файрфокса. Цитата из К&R
Вопросы: что за младшие биты, а что есть старшие ещё, а бит знака как работает, он где слева или справа, при каких значениях бита знак будет минус при каких плюс? Ещё: Это что двоичное число или восьмеричное, если это восьмеричное, то оно переводится в двоичную а потом происходит операция сравнения битов? Бывает ещё константы задаются в виде a = 01, b = 04 это какие числа, восьмеричные или какие-то другие? |
| Автор: inside_pointer 11.3.2008, 05:29 | ||
| спасибо, korian, исчерпывающе 0177 0 - признак восьмеричности, отбрасываем 177 раскладываем по тройкам 001 111 111 тут получилось 9 цифр, а в байте 8 бит, отбрасываем первый ноль 01 111 111 дальше n = n & 0177 превратилось в n = n & 01 111 111
значит младшие биты это те, которые справа, а старшие те, которые слева левые - старшие правые - младшие правые семь бит не обнуляются, это в каком случае, когда n = 11 111 111 чтоли ? там в книжке просто n и всё, не сказано чему равно |
| Автор: korian 11.3.2008, 05:46 |
в зависимости от n получаем результат n = 012 //00001010 n = n & 0177 // 00001010 & 01111111 = 00001010 n = 0377 //11111111 n = n & 0177 // 11111111 & 01111111 = 01111111 т.е. при данной операции 7 младших битов будут такими же, как и у числа n остальные биты будут нулями. |
| Автор: inside_pointer 11.3.2008, 07:43 |
| Всё терь понял до конца, спасибо. |