MySQL Datatypes — подписано без подписи

Давайте рассмотрим TINYINT. W3Schools говорит, что его диапазон со знаком составляет от -128 до 127, а диапазон без знака от 0 до 255.

1) Почему он говорит, что его диапазон составляет от -128 до 127, и почему нет, что его диапазон составляет от -128 до 255.

2) Означают ли эти диапазоны, что я не могу принять значение -129 или 256? (Допустим, я заполняю форму, где у меня есть текстовое поле)

-1

Решение

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

Проверь это Вот

0

Другие решения

Значение tinyint не от -128 до 255, поэтому они этого не говорят.

При создании таблицы она либо подписана, либо не подписана. Если вы не укажете, то по умолчанию будет подписано от -128 до 127. Если вы укажете unsigned при создании таблицы, ее значение будет от 0 до 255.

CREATE TABLE `example_table` (
`example_col` tinyint(3) unsigned NOT NULL
);

Второй ответ — «Да», вы не можете использовать значение от -129 или 256 в tinyint. Проверь это ссылка на сайт чтобы получить представление о верхней и нижней границе каждого.

0

TINYINT представляется через 8 бит (1 байт). Базовые знания теории информации говорят, что только 256 различных значений (256 = 2 ^ 8) может быть представлено 8 битами.

8 бит «tinyint» являются интерпретируется MySQL одним из двух способов:

TINYINT UNSIGNEDгде 256 значений интерпретированы как 0..255, или

TINYINT SIGNED (псевдоним TINYINT, поскольку SIGNED по умолчанию), где интерпретация имеет диапазон -128..127.

Когда верхний бит 08 бит представляют 0.127 одинаково между SIGNED а также UNSIGNED, Но когда верхний бит 18 бит представляют отрицательные числа или большие положительные числа.

Если бы вы хотели, вы могли бы интерпретировать 256 значений означают «красный», «желтый», «зеленый» и т. д. Это именно то, что происходит с другим типом данных:

ENUM('red', 'yellow', 'green')

Другая интерпретация из 8-битных байтов дает вам символы Ascii. Увидеть CHAR, VARCHAR, TEXT, так далее.

поскольку TINYINT должно быть либо SIGNED или же UNSIGNED, вы не могу иметь TINYINT столбец с обоими этими значениями: -111 и 222 (в разных строках). Если вам это нужно, используйте SMALLINT SIGNED, (Это приводит к обсуждению 16-битных представлений числа.)

0
По вопросам рекламы [email protected]