|
|
|
может кто расскажет про биты?25.08.2011, 13:25. Показов 4710. Ответов 58
Метки нет (Все метки)
0
|
|
| 25.08.2011, 13:25 | |
|
Ответы с готовыми решениями:
58
кто может обьяснить про что тут говорится Задача про биты |
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
|
| 25.08.2011, 13:59 | |
|
Из вопроса не понятно, что конкретно нужно рассказать про биты.
0
|
|
|
|
||
| 25.08.2011, 14:11 [ТС] | ||
|
например поток берет 1 в чаре. что при этом происходит? 00000001? 00110001?(49)
или поток берет 32 битный инт. тут идет 00000000 00000000 00000000 00000001? Я думаю что char обрабатывается быстрее ввиду своего размера, но....хотелось бы уточнить вопрос. как обрабатывается переменная типа char? в каком виде попадает в поток? в поток уходит битовое представление цифрового значения чара из таблицы символов? может вот так тогда? char a = '1'; (49) 00110001?
0
|
||
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
||
| 25.08.2011, 14:21 | ||
|
Также как и printf\cout, если им подаются в качестве параметров не символьные типы данных, сначала преобразует эти данные в текст, и тольк потом помещает их в поток.
1
|
||
|
|
|
| 25.08.2011, 14:27 [ТС] | |
|
понял. ну и в итоге чар будет чаром и далее будет (49) 00110001.
а 32 битный инт. вначале преобразуется в чар и далее в нечто 4848484848484848 4848484848484848 4848484848484848 4848484848484849 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110001 теперь все стало на свои места (или нет? инт заполнен нулями?) Добавлено через 1 минуту kazak, спасибо за подробную расшифровку. возможно когда буду читать про потоки там это все(про формат считывания) будет написано (надеюсь на это)
0
|
|
|
|
||||||||||||
| 25.08.2011, 15:37 | ||||||||||||
|
Добавлено через 5 минут В этом случае советую думать не битами, а байтами:
после ввода char buffer[8] содержит: 68 65 6C 6C 6F 00 00 00 00
после ввода сначала есть некая (внутренняя строка), 33 31 35 00 00 00 00 ... , которая потом преобразуется в четырёхбайтовый int: 00 00 01 3B
0
|
||||||||||||
|
|
||
| 25.08.2011, 16:18 [ТС] | ||
|
talis, ну в итоге все преобразуется в двоичную систему, разве нет?
0
|
||
|
Заблокирован
|
|
| 25.08.2011, 16:25 | |
|
всё и так в двоичной, куда переводить то?
1
|
|
|
|
|
| 25.08.2011, 16:32 | |
|
AzaKendler, да, в машине всё хранится в двоичной системе, однако минимальный адресуемый участок памяти - это байт. К тому же, проще оценить число в виде 0x1B35, чем 1101100110101, согласитесь
![]() Символы в машине хранятся в виде чисел. Например, символ пробела - 0x20, символ 'A' - 0x41, символ '0' - 0x30, символ '2' - 0x32. То есть строка "abba 1972" будет выглядеть в памяти как 61 62 62 61 20 31 39 37 32 00 Если записать в шестнадцатеричной системе, разумеется. Но число 1972, которое тут выглядит как 31 39 37 32, гораздо экономичнее и удобнее хранить как 07 B4 - и места меньше занимает, и в те же 4 байта можно вместить гораздо больше чисел, и математические операции в таком виде проще. По-этому строки хранят как последовательность символов, а числа (если они не часть строки) - в соответствующем числовом формате, будь то целочисленный знаковый/беззнаковый разных размеров, с плавающей точкой и так далее.
0
|
|
|
|
|
| 25.08.2011, 17:16 [ТС] | |
|
talis, ну т.е. это только для нашего удобства-понимания, верно? машина все равно нолики-единички думает?
0
|
|
|
|
|
| 25.08.2011, 17:49 | |
Сообщение было отмечено как решение
Решение
AzaKendler, в теории - да. Реально размер регистра общего назначения в x86 - 32 бита, и очень многие операции над числами делаются в один такт процессора, так что в этом случае она думает двойными-словами (слово - 2 байта, двойное - 4). Если брать SSE и его развитие то там вообще за один такт выполняются операции над четырёхмерными векторами float (считайте: 1 float - 32 бита, 4 float - 128 бит один регистр SSE).
Streaming SMID Extensions Так что сказать, что компьютер думает ноликами и единичками - это только небольшая часть истины. На самом низком аппаратном уровне - да. А так вообще всё гораздо интереснее
3
|
|
|
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
|
||||||||
| 25.08.2011, 18:42 | ||||||||
Если это сильно "низко" то смотри как работает компилятор и все станет ясно, я лично не знаю, но пока и не возникало неообходимости.
1
|
||||||||
|
|
||
| 25.08.2011, 20:14 [ТС] | ||
|
ужос
. столько полезной инфы накидали. спасибо надо прочесть.а про нолики и единички это я к тому что в той теме шла речь о том что гризлик показал свой вариант и он оказался быстрее чем просто с инт в разы. вот мне и стало интересно а почему? Подумалось из за размера. А потом подсказали что оказывается поток по умолчанию берет символы. т.е. если мы подаем на него 32битный (4х байтный инт) то он переводится в символьное представление и на это расходуется время. вот я и прикинул что получится если в итоге в двоичной системе окажется символ 1 или инт 1. и накидал ноликов и единичек. И получилось в случае с интом монстроподобная конструкция, это (мне) наглядно показало что значит сие преобразование. Спасибо парни огромное за кучу полезных ссылок мне как раз очень интересно железо и как все работает. вот вопрос. инт забит нулями чтобы зарезервировать размер? Добавлено через 1 минуту alkagolik, нет на самый низ не планировалось. планировалось в этом случае ограничиться информационным преднизьем. насколько получилось уж незнаю Добавлено через 2 минуты
0
|
||
|
|
|||||||
| 25.08.2011, 20:16 | |||||||
0
|
|||||||
|
|
|
| 25.08.2011, 20:24 [ТС] | |
|
talis, я имел ввиду следующее. если я присваиваю инту значение 1. все остальное место занимают нули?
0000000000000000001 (примерно так??). чтобы зарезервировать именно память под него - забито ли остальное место до 32 бит нулями?
0
|
|
|
|
|||
| 25.08.2011, 20:26 | |||
|
Добавлено через 54 секунды
1
|
|||
|
|
|
| 25.08.2011, 20:28 [ТС] | |
|
fasked, спасибо подтвердил мои мысли. Значит я все верно расписал.
0
|
|
|
|
||
| 25.08.2011, 20:31 | ||
|
Добавлено через 54 секунды Не по теме: Опоздал ответить...
1
|
||
| 25.08.2011, 20:31 | |
|
Помогаю со студенческими работами здесь
20
Задачка про биты Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат ... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... Интересно, может кто расскажет Кто сталкивался с фирмой DNS, и кто может сказать про эксплуатацию их ноутов сервис и прочее Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|