powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите разъяснить для себя момент с битами
6 сообщений из 6, страница 1 из 1
Помогите разъяснить для себя момент с битами
    #33539133
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброе время суток
есть небольшой пример из книги

#include<iostream.h>
char bin_str [8*sizeof(int)+1];
int number = 01;
int main ()
{
int i=0;
static int size = 8*sizeof(int);
for(i=size-1;i>=0;i--,number>>=1)
bin_str = (01 & number)+ '0';
bin_str[size] = '\0';
cout << "i =" << bin_str << endl;
return 0;

Вопрос возник вот в чем в книге сказано что операция (01 & number) возвращает 0 или 1 а в элемент строкового массива надо внести символ '0' или '1' и в этом преобразовании помогает добавление кода ASCII '0'. Для себя мне хотелось бы понять почему элементу массива возможно присвоить значение только после добавления кода '0' - зачем его добавлять и если кто знает как данное преобразование происходит. Поскольку именно в книге этот момент упущен.
Заранее спасибо.
...
Рейтинг: 0 / 0
Помогите разъяснить для себя момент с битами
    #33539227
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Того, кто написал эту книгу надо пристрелить.
Очевидно, что пример описывает преобразование
целого числа в символьное двоичное представление.
Однако для учебного примера, этот исходник тяжеловат.

Для всех 32 итераций цикла происходит заполнение
символьного массива нулями или единичками.

Выражение '0'+n возвращает код символ, который
отстоит от нуля на n позиций.

Выражение (01 & number) - по смыслу битовая операция.
Она проверяет состояние младшего бита и возвращает
десятичную единицу или ноль.

В комплексе это будет (01 & number)+ '0' как раз
возвращать символ '0' или '1'. Однако я-бы
это выражение перевернул так.

'0' + (01 & number)

Для C++ ничего не меняется, однако для более
строгих языков появляется неявное приведение типа.
Мне этот способ больше нравится. Вообще
такие вещи принято записывать через тернарную
операцию.

Следующее присвоение мне не очень понятно.

bin_str = (01 & number)+ '0'

Я-бы записал его так:

bin_str = (01 & number)+ '0'

Проверьте, нет ли опечатки.
...
Рейтинг: 0 / 0
Помогите разъяснить для себя момент с битами
    #33539229
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон.... вот так.

Код: plaintext
1.
bin_str[i] = ( 01  & number)+ '0'
...
Рейтинг: 0 / 0
Помогите разъяснить для себя момент с битами
    #33539376
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да именно
bin_str = (01&n) + '0'
.......опечатался

Спасибо за разъяснение, теперь все более менее понятно
...
Рейтинг: 0 / 0
Помогите разъяснить для себя момент с битами
    #33539377
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня почему то при добавлении сообщения в форум теряется последовательнось ' '
...
Рейтинг: 0 / 0
Помогите разъяснить для себя момент с битами
    #33539379
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все понял
Код: plaintext
 bin_str [i]= ( 01 &n) + '0'
просто в тектсе
Код: plaintext
 [i]
игнорируется
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите разъяснить для себя момент с битами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]