является ли ASCII бинарными данными
ivan
40 уровень
является ли ASCII бинарными данными
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
1 мая 2023, 19:36решение
Очень странный вопрос. Ты же понимаешь, что ASCII это кодировка текста?
Эта кодировка однобайтовая, потому один байт отвечает за один символ в этой кодировке, но... что ты понимаешь под бинарными данными? Все данные так или иначе хранятся в нулях и единицах если подумать. Что текстовый файл, что картинка, что exe это все набор байт.
+2
ivan дворник
2 мая 2023, 14:05
всегда считал ASCII бинарными данными. но вот что мне выдала нейросеть:
я: чем код
отличается от
нейросеть:
Оба эти кода считают частоту встречаемости символов в строке или файле, но первый код работает с типом char, а второй - с типом int.
Первый код использует метод charAt() для получения каждого символа в строке и инкрементирует соответствующий элемент массива charFreq. Затем он проходит по всем элементам массива charFreq и выводит на экран только те символы, которые встречаются в строке.
Второй код использует BufferedReader для чтения файла и метод read() для получения каждого символа в файле. Затем он инкрементирует соответствующий элемент массива buff. Этот код также проходит по всем элементам массива buff и выводит на экран только те символы, которые встречаются в файле.
Таким образом, выбор между этими двумя кодами зависит от типа данных, с которыми вы работаете. Если вы работаете с текстовыми данными, используйте первый код, а если вы работаете с бинарными данными, используйте второй код. Однако, второй код может работать некорректно с символами, которые не входят в ASCII-таблицу, так как он использует массив типа int вместо массива типа char.
0
Денис Enterprise Java Developer
2 мая 2023, 14:18решение
И? Где панчлайн?
Я уже молчу, что ответ нейросети как минимум спорный.
Так например метод read() у BufferedReader возвращает интовое значение от 0 до 65535 ну или -1 как обычно. Есть у меня сомнения относительно второго куска кода, думаю, по очевидным причинам. Да и в целом, использовать буферизированный ридер для того чтобы читать побуквенно это странный подход.
Все данные в машине хранятся в байтах, байты состоят из битов (восьми если уж на то пошло). При помощи разных комбинаций этих самых битов хранится информация.
Так например integer в java представлен четырьмя байтами (32 бита), соответствующие комбинации этих самых битов условленно принимать за какие-либо числа, а набор чисел ограничен непосредственно количеством этих самых перестановок.
Старший бит отвечает за знак числа, все остальные за значение. Есть еще так называемая беззнаковая запись, там чуть иначе работает и другой диапазон. В целом как с байтом, или -127 - 128 или 0-256 количество одно и то же, просто другой подход.
Точно так же и ASCII - это не более чем стандарт кодировки текстовых символов. Это однобайтовая кодировка, т.е. один символ представлен одним байтом (8 бит).
Таких символов получается 256 - не дофига, но этого хватает. Для большего охвата есть двухбайтовые кодировки типа utf-8, там символов больше, потому как каждый из них представлен уже двумя байтами (16 бит) и значит комбинаций этих самых битов больше.
К слову, на самом низком уровне такой подход очень удобен, единица это есть сигнал, ноль - нет сигнала. Потому на обычной электрической схеме можно собрать простейшие элементы компьютерной техники типа сумматоров. Современные процессоры просто набор этих самых примитивных схем упакованные в крайне малом объеме. Ну и соответственно тоже есть стандарт о том, как с этой штукой работать, наборы инструкций и как их обрабатывать.
+2
ivan дворник
2 мая 2023, 14:22
я согласен что он спорный. в след моем вопросе про ASCII нейросеть выдала правильный ответ. + я гуглил.
спасибо что поправил мой код
0
Денис Enterprise Java Developer
2 мая 2023, 14:24полезный
Собственно само название бинарный произошло как раз от того, что у единицы информации может быть только два состояния - ноль и единица. И комбинируя эти состояния в разных наборах единиц информации ты можешь кодировать данные удобным тебе образом.
Именно по этому любые данные в вычислительной технике являются бинарными, другой (широко распространённой) методологии их хранения и передачи пока не придумали.
Вроде бы я слышал что-то про троичные системы счисления в вычислительной технике, но не уверен на сколько они прижились и как широко используются.
+1
ivan дворник
2 мая 2023, 14:27
поэтому меня ввел ответ нейросети в заблуждение
что такое панчлайн? это что-то связанное с юмором (загуглил)?
0
Денис Enterprise Java Developer
2 мая 2023, 14:31полезный
что такое панчлайн?
Место где нужно смеяться в анекдоте
В твоём ответе не было завершённой логической мысли. Ты привёл какую-то цитату, но ни выводов из нее не сделал ни вопроса не задал. Т.е. оставил собеседника догадываться о том, "что хотел сказать автор".
+1
ivan дворник
2 мая 2023, 14:51
мой вопрос: "является ли ASCII бинарными данными?"
нейросеть: "
Таким образом, выбор между этими двумя кодами зависит от типа данных, с которыми вы работаете. Если вы работаете с текстовыми данными, используйте первый код, а если вы работаете с бинарными данными, используйте второй код. Однако, второй код может работать некорректно с символами, которые не входят в ASCII-таблицу, так как он использует массив типа int вместо массива типа char."
0