Що таке двійкове представлення "256"? [зачинено]


15

Ви можете перетворити десятковий у двійковий і двійковий у десятковий. Але як можна представити число "256"?

255 = 11111111

1 байт не може мати більше 8 двійкових цифр (біт). Як це можливо?


3
Як вже говорив @Serious. Вам потрібен ще один біт, тому що комп’ютери починають рахувати з 0. Це 11 в "мові рук" або "ще одна людина" (байт) у реальному світі :)
SOMN,

2
Я закрив це як "Не справжнє запитання", оскільки важко сказати, що ти насправді хочеш знати. Ви хочете знати двійкове представлення числа? Вам цікаво, як можливо, що число навіть існує, хоча воно не може вміститись у байт? Вам цікаво, як зберігаються дані в бітах і байтах? Так, 1 байт не може містити більше 8 біт, тому що це визначення байта. Але це взагалі не накладає жодних обмежень на цифри.
Der Hochstapler

Ви не можете представляти 256 на 8-бітному.
Перемогти

Відповіді:


40

Ви запитуєте, як представити 256 у двійковій формі, але я гадаю, вам цікаво, чому люди кажуть, що байти можуть зберігати 256 різних чисел, коли найбільше їх кількість зберігає 255. Як сказав Клаудіоп, комп'ютери починають рахувати з 0, так 0 насправді перше число, 1 друге, 2 третє ... 255 - 256-е.

Також 11111111 становить лише 255 для непідписаних байтів. Якщо у вас є підписаний байт (підписане значення - це те, що може містити негативні значення), 11111111 насправді -1. Дивіться http://en.wikipedia.org/wiki/Two's_complement . Те, як працює доповнення двох, додаючи від'ємне число до додатного числа, призводить до 0. Як сказали інші люди, якщо ми додамо трохи до 11111111, а ваш тип даних може підтримувати лише 8 біт, останній біт переповниться і залишить вас 0. Для підписаних байтів значення варіюються від -128 до 127. 128 негативних чисел + 0 + 127 додатних чисел = 256 чисел загалом.

Для підписаних значень перший біт - це біт "знак". Якщо цей біт встановлений, число від’ємне. 10000000 - негативний, 01000000 - позитивний, 11111111 - негативний, 01111111 - позитивний ...

Якщо ви перебуваєте у вікні (можливо, у Mac теж є), ви можете відкрити калькулятор, переключити його в режим програміста, вибрати sbyte і пограти з бітами, щоб побачити, як вони співвідносяться з десятковими поданнями.

Windows Калькулятор, що показує 256 у десятковій чи двійковій формі



11

Як ви вже знаєте, 255d (десятковий) дорівнює 11111111b (двійковий). Якщо ви тепер хочете додати значення 1, є дві можливості:

Або у вас є лише 8 біт. У цьому випадку відбувається так зване переповнення . Так "внутрішньо" 1 буде додано, що призведе до 100000000b (256d в 9 бітах). Але оскільки у вас є лише 8 біт, нижні 8 біт будуть "повернені". Таким чином, ви отримуєте 0d = 0b (у більшості архітектур комп'ютерів буде встановлено спеціальний прапор переповнення, як бічна примітка.)

Подумайте про це так само, як рахувати пальцями. Уявіть, що ваші пальці показують 9d. Тепер ви додаєте ще один палець. У вас закінчується 10. Що ви робите, якщо хочете додати ще один?

Інша можливість полягає в тому, що у вас є більше 8 біт. У цьому випадку ви можете просто додати ще одну цифру до початку, і результат дійсно буде 100000000b = 256d.

Байт - найменший "блок", на який може звертатися комп'ютерна система (система пам'яті). Це означає, що якщо ви хочете знати лише один біт, вам потрібно попросити систему пам’яті дати вам певний байт з адреси, і тоді вам доведеться з’ясувати значення біта, який вас цікавить.

Але так само, як 8 біт складають байт, є і більші типи даних. 2 байти складають слово (16 біт), два слова (чотири байти, 32 біти) складають подвійне слово. А нині стандартні 64-бітні архітектури навіть мають 64 бітові типи даних (так звані регістри).


Так, і комп'ютер не вважає ці 64 біти групою з 8 окремих байтів, а як єдину одиницю, що складається з 64 біт. Наприклад, якщо у вас є підписані значення, то лише один із цих 64 біт є бітом знаків.
Містер Лістер

5

Це 100000000 і йому потрібно більше одного байта. Насправді йому потрібно 9 біт.


0

Ви можете представити його за допомогою операції зсуву трохи (ліворуч або праворуч залежно від витривалості бінарного подання). Наприклад, цей один вкладиш працює для великого ендіанського представлення (найзначніший перший байт):

1 << 8

Непідписаний байт може містити лише 256 значень, що включає діапазон [0 - 255]. Для значення 256 вам потрібно буде використовувати тип даних, який може вмістити більше значення, наприклад, ціле число.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.