计算机科学中的比特是什么

What is bits in computer science

我在 youtube 上看了 video 关于这些位的内容。看完之后,我对数字、字符串或任何字符的实际大小感到困惑。我从视频中了解到的是。

1= 00000001 // 1 位

3= 00000011 // 2 位

511 = 111111111 // 9 位

4294967295= 1111111111111111111111111111111 //32 位

1.5 = ? // ?

我只想知道上面给定的小数点后的陈述是否正确?或所有数字、字符串或任何字符占用 8 个字节。我使用的是 64 位操作系统。

十进制值的二进制编码是多少

位和字节是有区别的。

1 位是以 2 为基数的单个数字 0 或 1。

1 字节 = 8 位。

是的,你给出的陈述是正确的。

1.5的二进制代码为001.100。然而,这就是我们解释二进制的方式。计算机存储数字的方式不同,并且基于编译器和平台。例如 C 使用 IEEE 754 格式。 Google 了解更多。

您的 OS 是 64 位意味着您的 CPU 架构是 64 位。

如果我没理解错的话,你问的是有多少 bits/bytes 用于表示给定的数字或字符。我将尝试涵盖常见情况:

整数(整数)值

由于most systems use 8-bits per byte, integer数字通常表示为8位的倍数:

  • 8 位(1 字节)是 C char 数据类型的典型值。
  • 16 位(2 字节)是 intshort 值的典型值。
  • 32 位(4 字节)是 intlong 值的典型值。

每个连续的位用于表示前一个大小两倍的值,因此第一位表示一,第二位表示二,第三位表示四,依此类推。如果一个位设置为1,它所代表的值作为一个整体被添加到数字的"total"值中,所以4位值1101(8,4,2 , 1) 是 8+4+1 = 13.

请注意,0 仍被计为位,即使是数字 3,因为它们仍然需要 来表示号码。例如:

  • 00000011将十进制值3表示为8位二进制数。
  • 00000111将十进制值7表示为8位二进制数。

第一个数字中的零用于将其与第二个数字区分开来,即使它不是 "set",而是 1

一个 "unsigned" 8 位变量可以表示 2^8 (256) 个值,范围为 0 到 255(含)。 "Signed" 值(即可以为负数的数字)通常被描述为使用单个位来指示该值是正数 (0) 还是负数 (1),这将给出一个2^7(-127 到 +127)的有效范围,但由于用两种不同的方式表示零(-0 和 +0)没有太大意义,因此通常使用 two's complement 来允许稍大的存储范围:-128 到 +127.

小数(分数)值

数字如1.5通常表示为IEEE floating point values。 32 位 IEEE 浮点值像典型的 int 值一样使用 32 位,但 将以不同方式使用这些位 。如果您对其工作原理的技术细节感兴趣,我建议您阅读维基百科文章 - 我希望您喜欢数学。

或者,非整数可以使用 fixed point format; this was a fairly common occurrence in the early days of DOS gaming, before FPUs became a standard feature of desktop machines, and fixed point arithmetic is still used today in some situations, such as embedded systems.

表示

文字

简单的 ASCII 或 Latin-1 文本通常表示为一系列 8 位字节 - 换句话说,它是一系列整数,每个数值代表一个字符代码。例如,00100000(32)的 8 位值表示 ASCII space(</code>)字符。</p> <p>替代的 8 位编码(例如 <a href="https://en.wikipedia.org/wiki/JIS_X_0201" rel="nofollow">JIS X 0201</a>)将这些 2^8 数值映射到不同的可见字符,而其他编码可能对每个字符使用 16 位或 32 位值。 </p> <p>Unicode字符集(比如8位<a href="https://en.wikipedia.org/wiki/UTF-8" rel="nofollow">UTF-8</a> or 16-bit <a href="https://en.wikipedia.org/wiki/UTF-16" rel="nofollow">UTF-16</a>)比较复杂;单个 UTF-16 字符可能表示为 <em>单个</em> 16 位值或 <em>对</em> 16 位值,而 UTF-8 字符可以是从<em>一个</em>个8位字节到<em>四个</em>个8位字节!</p> <h2>字节顺序</h2> <p>您还应注意,跨越超过一个 8 位字节的值通常以以下两种方式之一 <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms737560%28v=vs.85%29.aspx" rel="nofollow">byte-ordered</a>:<em>little</em> endian,或 <em>大</em>字节序。</p> <ul> <li><strong>Little Endian:</strong> 512 的 16 位值将表示为 <code>11111111 00000001(即最小值位在前)。

  • Big Endian: 512 的 16 位值将表示为 00000001 11111111(即最大值位在前)。
  • 您可能还听说过混合端、中间端或双端表示 - 请参阅 Wikipedia article 了解更多信息。

    一位是一个二进制数字,例如 0 或 1。 一个字节是八位,或两个十六进制数字 半字节是半个字节或 1 个十六进制数字

    单词变得有点复杂。最初它是覆盖内存中可用地址范围所需的字节数。因为我们有很多混合和内存方案。字通常是两个字节,一个双字,4个字节等

    在计算中,一切都归结为二进制,即 0 和 1 的组合。字符、十进制数字等都是表示形式。 所以字符 0 是 7(或 8 位 ascii),二进制为 00110000,十六进制为 30,十进制(基数 10)为 48。如果您选择 'see' 它作为单字节字符,它只是 '0'。

    用小数点表示数字的方式更加多样。有许多公认的方法可以做到这一点,但它们是惯例而不是规则。

    查看 1 和 2 的补码、格雷码、BCD、浮点表示法等以获得更多想法。