2015-08-28 3 views
1

В последнее время я пытался научиться C#, но мне сложно что-то понять. Каждый интегральный тип имеет размер (подписанный 8-битный, без знака 8 бит, 16-битный, без знака 16 бит и т. Д.). Мне сложно понять, что такое размеры, и как они получают этот размер. Что означает 8bit, 16bit, 32bit и т. Д.? И подписан и без знака. Я не понимаю их. Если кто-нибудь может сослаться на ссылку с пояснениями на биты, подписанные и неподписанные, или даже объяснить это мне, это было бы здорово. thanksC# - размеры шрифта

+4

https://en.wikipedia.org/wiki/Bit и https://en.wikipedia.org/wiki/Integer_(computer_science) будет хорошим началом. –

+1

https://msdn.microsoft.com/en-us/library/exx3b86w.aspx – Martheen

+2

Беззнаковое число может быть положительным, подпись может быть положительной/отрицательной. 8-битное число означает, что его число может представлять 2^8 различных значений. Подписанное 8-битное целое число может содержать значение от -128 до +127, без знака 8-битных целых значений ca hold от 0 до 255. –

ответ

5

Все типы сохраняются как биты на вашем компьютере.

Если вы открываете Калькулятор и помещаете его в режим программирования (Alt + 3), вы можете видеть, как числа (целые числа, в любом случае) представлены как биты.

Calculator in Programmer Mode

Как вы можете видеть на картинке выше, 255 занимает бит 0 7 (восемь 1-х подряд). 255 - это наивысшее число, которое вы можете представить в 8-битном целочисленном Unsigned. Если вы добавите 1 до 255 по 8-битовому типу, вы получите ошибку переполнения, потому что 256 не вписывается в 8 бит. На языках более низкого уровня, без ошибок переполнения, 255 + 1 равно 0, так как значения переваливаются за.

Подписанные значения используют один бит для представления знака (положительного или отрицательного). Таким образом, подписанное 8 битное число может перейти от -128 до 127.

+------+-----+----------------------+----------------------+---------------------+ 
|  | unsigned     | signed          | 
+------+-----+----------------------+----------------------+---------------------+ 
| bits | min | max     | min     | max     | 
+------+-----+----------------------+----------------------+---------------------+ 
| 8 | 0 | 255     | -128     | 127     | 
| 16 | 0 | 65535    | -32768    | 32767    | 
| 32 | 0 | 4294967295   | -2147483248   | 2147483647   | 
| 64 | 0 | 18446744073709551615 | -9223372036854775808 | 9223372036854775807 | 
+------+-----+----------------------+----------------------+---------------------+ 

Числа с плавающей точкой, как поплавки и дважды сохраняются другим способом, который не так легко объяснить: https://en.wikipedia.org/wiki/Floating_point#Internal_representation

В основном , с целыми числами больше бит означают большие числа, а с плавающей точкой больше бит может означать большие числа и/или более точность (десятичные разряды).

Также стоит отметить, что подписан знак int, а uint - без знака. Все номера с плавающей запятой составляют , подписанный, из-за их specification.

Полезные ссылки (с комментариями и т.д.):

2

Размер определяет, сколько бит используется в хранилище типа.

Е.Г. 8bit INT: 00000001 == 1

Если тип подписан, то первый бит типа определяет, является ли это положительное или отрицательное значение

например 11111111 == -1 (с использованием . что называется двоичное дополнение Более подробно в ссылке)

быстрая изношенном подписанных типов можно найти здесь: http://kias.dyndns.org/comath/13.html

Смежные вопросы