LINUX.ORG.RU

информатика . школьная программа .

 


0

2

здрасьте здрасьте люди добрые

помогите разобраться.

информатику не проходил в школе, просто ее не было.

вот сейчас стал читать умные книжки по совету форума и столкнулся с тем, что не понимаю о чем толкуют авторы.

как я понимаю: байт, имее 8 ячеек. в восьми ячейках у нас может быть 256 состояний.

но нумеруются биты, с нуля. сначала идет два в нулевой степени, затем идет два в первой , два во-второй и тд. и тогда выходит что два в седьмой займет 8 ячеек. а два в седьмой -это 128. значит байт может хранить максимальное значение 128. в чем я неправ? пожалуйста объясните

У вас учебники из какой-то очень продвинутый школы. Мы рисовали круг.

greta_so_straponom3
()

Максимальное значение «байта» в твоём случае это сумма 1 * 2^7 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)

Если только «седьмой» ряд занят единицей, то получается 128. Если все ряды с единицами - 255.

xDShot ★★★★★
()

1 байт может хранить 256 состояний.

Начальное состояние 00000000, конечной - 11111111;

2 ^ 7 = 128. Это верно.

Но если заполнены все 8 бит, то это:

10000000 = 128
01000000 = 64
00100000 = 32
00010000 = 16
00001000 = 8
00000100 = 4
00000010 = 2
00000001 = 1

И того 11111111 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255

anonymous
()

информатику не проходил в школе, просто ее не было.

Жуть, да и только.

как я понимаю: байт, имее 8 ячеек. в восьми ячейках у нас может быть 256 состояний.

но нумеруются биты, с нуля. сначала идет два в нулевой степени, затем идет два в первой , два во-второй и тд. и тогда выходит что два в седьмой займет 8 ячеек. а два в седьмой -это 128. значит байт может хранить максимальное значение 128. в чем я неправ? пожалуйста объясните

Путаешь индекс бита с их количеством. Количество возможных состояний для N битов 2^N, максимальное хранимое значение 2^N - 1, индексы битов от 0 до N-1 включительно. Эти выражения можно вывести с помощью математической индукции, например. Отсюда для обычного байта в 8 бит получаем 256 состояний, значения от 0 до 255, индексы битов от 0 до 7. Строго говоря, индексы для битов это некоторая условность (не условность: какие значения хранит байт), но практически нумеровать с нуля удобнее в большинстве случаев.

lu4nik ★★★
()

в чем я неправ?

В том, что потерялась сумма.

Два бита, например, могут принимать 4 значения. Несмотря на то, что 10 в двоичной системе - это 2. Потому, что есть ещё такой вариант как 11 - 3 в десятичной системе. Поэтому получается 4 варианта от 0 до 3 включительно.

Ну и т.д.

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)

Почитай про знаковые и беззнаковые числа.

Почитай про прямой и дополнительный код.

vel ★★★★★
()

Пояснение для местных, почему он начинает свои посты со слов

здрасьте здрасьте люди добрые

https://www.youtube.com/watch?v=tu0IK5fZSVg

Скорее всего он тролль и любитель MMA.

anonymous
()
Ответ на: комментарий от scepticalmoose

блин, всмысле? я осваиваю не для заработка на этом. хобби.

Assembler
() автор топика
Ответ на: комментарий от vel

я не так общаюсь с отрицательными числами… исхожу из того что сумма положительного и отрицательного числа должны быть равны нулю. и просто чтобы найти какое -то отрицательное число, то есть противоположенное , я подгоняю пока какое либо число в сумме с ним не дадут ноль.

то работает, но только для небольших чисел.

можете сказать, если я вдруг хочу инвертировать число размер которого будет два байта, знаковая единица будет содержаться в конце младшего байта?

Assembler
() автор топика
Ответ на: комментарий от Assembler

можете сказать, если я вдруг хочу инвертировать число размер которого будет два байта, знаковая единица будет содержаться в конце младшего байта?

Знак в памяти, обычно, определяется старшим битом. При этом отрицательные числа, обычно, записываются несколько иначе.

Например, если 2020 запишется как

0000000000000000000000000000000000000000000000000000011111100100
, то -2020 запишется как
1111111111111111111111111111111111111111111111111111100000011100
Если в последнем числе поменять старший бит на 0, то получится число 9223372036854773788.

Логика здесь такова, что 9223372036854775807 (0111111111111111111111111111111111111111111111111111111111111111) - 9223372036854773788 = 2019.

saahriktu ★★★★★
()
Ответ на: комментарий от Assembler

Младший/старший байт/бит - это смотря с какой стороны посмотреть.

Вы про порядок байт и бит почитайте. Там все так интересно.

можете сказать, если я вдруг хочу инвертировать число размер которого будет два байта, знаковая единица будет содержаться в конце младшего байта?

В некоторых архитектурах - да.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от Assembler

Чувак, там херь мутная. Есть прямой код. Есть обратный код. И есть дополнительный код.

Если использовать прямой код, при записи положительного числа, то ты его пишешь, как есть, ну конеч но же в двоичной системе счисления. Есл отрицательное записываешь в прямом коде, диапазон уменьшится, и единица, что была в самом старшем разряде, станет знаковой.

В обратном коде, положительное число также будет записанно, как есть. Но отрицательное будет инвертированно, а после знаковая единица сменит ноль. Выполнишь действия сложения, и если случится переполнение, то прбавишь единицу к самому младшему биту.

Если не ошибаюсь. Я и сам бы с удовольствием послушаю тех кто шарит. Для этого и зашел в эту тему. Но как всегда решил вставить свое две копейки.

LGH
()
Ответ на: комментарий от saahriktu

Мы с этим придурем вместе учились очень давно. Про информатику он правду сказал.

LGH
()

в чем я неправ?

Обалдеть, 18 комментов и еще никто не рассказал ТСу, что он путает байты с октетами? Не узнаю ЛОР.

t184256 ★★★★★
()
Ответ на: комментарий от LGH

Если уж разбираться, то байт — минимально адресуемая ячейка памяти. Размер байта этим определением не задается и зависит от конкретной архитектуры. ТС и все далее по треду обсуждают октеты — ячейки памяти размером по 8 бит.

t184256 ★★★★★
()

Посоветуйте книг или может сайт какой, где компьютер сайнс для совсем беггинерс, чтобы даже ребёнок или веб разработчик всё поняли сразу.

anonymous
()

Нам в школе на информатике рассказывали, что чтобы в пейнте, или пиратском Фотошопе нарисовать квадрат надо зажать шифт.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

У нас в школе на информатике стояло такое железо, что представить на нём запуск пейнта можно было только под веществами.

Потом, правда, железо сменили. А училок не сменили.

Deleted
()
Ответ на: комментарий от Deleted

У нас учитель был, а не училка. Между прочим, мехмат МГУ закончил. На 20 лет выпуска недавно его видел, до сих пор там работает.

DELIRIUM ☆☆☆☆☆
()

Тут нужна комбинаторика, а не информатика.

crutch_master ★★★★★
()
Ответ на: комментарий от LGH

В обратном коде, положительное число также будет записанно, как есть. Но отрицательное будет инвертированно, а после знаковая единица сменит ноль. Выполнишь действия сложения, и если случится переполнение, то прбавишь единицу к самому младшему биту.

Вот из-за этого и используется дополнительный код, в котором сложение/вычитание делается за 1 действие.

В учебнике по арифметическо-логическим основам цифровых вычислительных машин это все подробно расписано.

vel ★★★★★
()
Ответ на: комментарий от LGH

Чувак, там херь мутная.

Да?

Я и сам бы с удовольствием послушаю тех кто шарит.

Что там шарить?

X + (-X) == 0

Поэтому отрицательное число (-X) в дополнительном коде записывается так, будто это такое положительное, которое при сложении с X переполнит разрядную сетку и даст ноль.

В 16-разрядной арифметике:

0x0001 + 0xFFFF == 0x0000 Поэтому -1 записывается как 0xFFFF.

0x0002 + 0xFFFE == 0x0000 Поэтому -2 записывается как 0xFFFE.

И т.п.

Особняком остаётся стоять число 0x1000, потому что его дополнение равно самому себе:

0x1000 + 0x1000 == 0x0000

Deleted
()
Ответ на: комментарий от Deleted

Ну как что шарить? Человек вот выше говорит, что байт не определяется через 8 бит. Байт может(мог) быть и 16, и 32 бита. Это вы тут все знаете. Для вас это не интересно. Но спроси студента вуза и думаю, что половина из них скажет, что байт -8бит. И я бы так сказал.

LGH
()
Ответ на: комментарий от t184256

Спасибо, что внесли ясность, хоть какую то.

LGH
()
Ответ на: комментарий от LGH

Имхо, это просто повод дое…

Были всякие железки в 20-м веке, но давно уже все сошлись на 8 битах, и другие варианты встречаются только в музеях. Смысл об этом вспоминать?

У нас даже в компиляторах привязка к 8-битовым байтам прибита почти везде.

Deleted
()
Ответ на: комментарий от Deleted

Ну знать надо. Вот такие мелочи и могут погубить.

Я говорю об обычных пользователях, ну как я, ну и этот на осле верхом.

Вы тут все в теме. А нас учили как придется. Я поэтому и кинул ссылку им, чтобы зашли на этот ресурс. Тут хоть грамотности компьютерной наберемся.

LGH
()
Ответ на: комментарий от LGH

А это мутный вопрос. Можно аналогично спросить что такое «самолёт», мало кто вспомнит устаревшие значения.

Термин «байт» продвигала IBM. Сейчас есть стандарт: ISO/IEC 2382-1:1993.:

01.02.09. Байт
Последовательность (04), состоящая из некоторого числа Бит (01.02.08),
обрабатываемых как единый блок и обычно представляющая Литеру
(01.02.11) или часть литеры.
Прим. 1: Число бит в байте
фиксировано для конкретной Системы
обработки данных (01.01.11).
Прим. 2: Число бит в байте, обычно,
равно 8-ми.
А раньше стандарта не было. И, допустим, в документации к древней системе PDP-10, где, якобы, байт не равен 8 битам, вобще слова «byte» нет. Компьютер есть, а байт в нём нет :). Там используются слова ″word″ == «машинное слово» (в документации СССР), ″char″. А минимальная адресуемая единица памяти ″half word″...

mky ★★★★★
()
Ответ на: комментарий от mky

Тьфу блин. 0x8000.

Если бы. Я не высыпаюсь 4й день. Сегодня мимо поворота на работу проехал, пришлось по пробкам кругаля давать .

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.