计算机科学中的比特是什么
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 字节)是
int
或 short
值的典型值。
- 32 位(4 字节)是
int
或 long
值的典型值。
每个连续的位用于表示前一个大小两倍的值,因此第一位表示一,第二位表示二,第三位表示四,依此类推。如果一个位设置为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、浮点表示法等以获得更多想法。
我在 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 字节)是
int
或short
值的典型值。 - 32 位(4 字节)是
int
或long
值的典型值。
每个连续的位用于表示前一个大小两倍的值,因此第一位表示一,第二位表示二,第三位表示四,依此类推。如果一个位设置为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
(即最小值位在前)。
00000001
11111111
(即最大值位在前)。您可能还听说过混合端、中间端或双端表示 - 请参阅 Wikipedia article 了解更多信息。
一位是一个二进制数字,例如 0 或 1。 一个字节是八位,或两个十六进制数字 半字节是半个字节或 1 个十六进制数字
单词变得有点复杂。最初它是覆盖内存中可用地址范围所需的字节数。因为我们有很多混合和内存方案。字通常是两个字节,一个双字,4个字节等
在计算中,一切都归结为二进制,即 0 和 1 的组合。字符、十进制数字等都是表示形式。 所以字符 0 是 7(或 8 位 ascii),二进制为 00110000,十六进制为 30,十进制(基数 10)为 48。如果您选择 'see' 它作为单字节字符,它只是 '0'。
用小数点表示数字的方式更加多样。有许多公认的方法可以做到这一点,但它们是惯例而不是规则。
查看 1 和 2 的补码、格雷码、BCD、浮点表示法等以获得更多想法。