K&R C справка осуществления

То, что я имею, является интранет подобный Знатоку репозиторий, где все сторонние библиотеки хранятся (не только библиотеки, но и их соответствующее исходное распределение с документацией, Javadoc и всем). Причина следующая:

  1. , почему хранить файлы, которые не изменяются в систему, специально предназначенную для управления файлами то изменение?
  2. это существенно закрепляет контроль
  3. каждый раз, когда я вижу "something.jar", сохраненный при управлении исходным кодом, которое я спрашиваю "и какая версия - он?"
7
задан Georg Fritzsche 19 June 2010 в 19:35
поделиться

5 ответов

Излагая ответ Ави:

int i = setbits(0xAB = b10101011, 5, 3, 0xAA = b10101010);
i equals 0x93 = b10010011

Скажите, что ваш i = 0xAB. В двоичном формате это: 10101011

Давайте пронумеруем каждую из битовых позиций.

Position #: 7   6   5   4   3   2   1   0
Bit:        1   0   1   0   1   0   1   1

Самый правый бит (наименее значимый) - это позиция «0». Самая левая (самая значимая) - это позиция 7.

Итак, следующие два значения, p и n, говорят: «Вы хотите изменить n битов, начиная с бита p». Итак, если p = 5 и n = 3, вы хотите начать с бита номер 5, и в целом вы изменяете 3 бита. Что означает в этом примере биты 5, 4, 3. «101»

Position #: 7   6   5   4   3   2   1   0
Bit:        1   0   1   0   1   0   1   1
                   |         |
                    ---------
               (Modifying these three bits)

Как мы их изменяем? Мы их заменяем. С другим набором из 3 бит. Три младших бита из y.

Итак, вот y:

Position #: 7   6   5   4   3   2   1   0
Bit:        1   0   1   0   1   0   1   0 

И самые правые биты будут битами 2, 1, 0. или значением «010». Конечно, если значение n = 6, то вы

12
ответ дан 6 December 2019 в 11:50
поделиться

Например:

int i = setbits(0xAB = b10101011, 5, 3, 0xAA = b10101010);
i equals 0x93 = b10010011

Мы берем 3 бита, начиная с позиции 5 в x (101), и заменяем их тремя крайними правыми битами из y (010).

3
ответ дан 6 December 2019 в 11:50
поделиться

Этот «возможный ответ» - это просто код без комментариев. Неудивительно, что это вам не помогло.

Вопрос (и, вероятно, ответчики) предполагают, что вы знакомы с битовыми полями. Подобные вещи очень распространены во встроенном программировании, когда вы управляете аппаратными регистрами.

Скажем, есть регистр, который, помимо прочего, устанавливает уровень громкости звука. В то же время он мог бы позволяют выбрать динамики или микрофоны и тому подобное. Биты могут выглядеть следующим образом:

ssAAAmxx - Каждая буква представляет собой битовое поле внутри этого числа. Чтобы изменить громкость, вы должны изменить значение «AAA». Теперь, допустим, у вас есть что-то в вашей программе, позволяющее регулировать громкость. Это простой элемент управления, и он всегда возвращает число от 0 до 7. Формат для этого выглядит следующим образом:

xxxxxAAA - Ваша задача состоит в том, чтобы взять из него биты AAA (назовите его «y»), и установите их в это число выше (назовите его "x"), не изменяя биты, не являющиеся буквами A. Таким образом, задача будет выглядеть так: «Возьмите 3 крайних правых бита y и установите их в x, начиная с бита 5 (помните, они считают биты с нуля). Затем,

2
ответ дан 6 December 2019 в 11:50
поделиться

Операция - «вставка битового поля»

Идея состоит в том, что y обычно меньше, чем n бит, но в случае, если это не так используйте только n . На английском языке задача состоит в том, чтобы вставить y в x , начиная с p , используя ширину поля n .

1
ответ дан 6 December 2019 в 11:50
поделиться

Заменить n битов x, начиная с позиции p, n крайними правыми битами y.

И, вероятно, вам стоит воспользоваться функцией getbits () из главы 2.9

0
ответ дан 6 December 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: