【问题标题】:byte, word and double-word number representation字节、字和双字数字表示
【发布时间】:2020-10-02 21:44:56
【问题描述】:

我读了一本名为assembly64 的书,可以找到here,现在它说 - 一个字节(8 位)可以用来表示 256 个不同的数字,一个字(16 位) 可用于表示 65,536 个不同的值,而一个双字(32 位)可用于表示 4,294,967,296 个不同的数字。因此,如果您想存储 100,000 的值,则需要一个双字。

我不明白代表x不同的值是什么意思?我知道一个字符是 1 字节,而 256 是 ASCII 表,但我不明白下面这行 - 一个单词(16 位)可用于表示 65,536 个不同的值 ,这 65,536 个值是什么意思?

【问题讨论】:

  • 简单示例,假设您需要将十进制数 7 存储为二进制。二进制数字 7 是 111 ,每个 1 代表一个位,因此 3 位。每个位都是 1,这意味着这是您可以用 3 位表示的最大值。如果你用二进制数从 0 到 7:000、001、010、011.... 最终得到 111。你将计算 8 个不同的值(000、001、010、011、100、101、110、111)。这意味着您可以在 3 位上表示 8 个不同的值。 2^3=8

标签: integer x86-64 data-representation


【解决方案1】:

我不明白“表示 x 个不同的值”是什么意思。

如果您的数据类型可以存储值01,它可以存储两个不同的值。

因此,“表示 x 个不同的值”意味着,如果从 0 开始,它可以存储最大为 x - 1 的整数。也就是说,数字通常是有符号的,因此最大值较低,最小值为负数。

要找到给定位数的最大无符号值,如果n 是位数,则计算为2^n - 1

在您链接的文档 (direct link) 的第 36 页上,有一个表格详细说明了可以存储在每种数据类型(有符号和无符号)中的可能值。

【讨论】:

    【解决方案2】:

    你提到的任何数据类型都是如此 - 一个字节是一组 8 位。位是最基本的单位,可以是 1 或 0。一个字节不仅仅是 0 和 1 之间的 8 个值,而是 256 种不同的组合(相当排列),范围从 00000000 到例如01010101 至 11111111。因此,一个字节可以表示 0(00) 到 255 之间的十进制数。

    【讨论】:

      猜你喜欢
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2014-12-30
      • 1970-01-01
      • 2014-11-06
      • 2016-03-01
      • 1970-01-01
      相关资源
      最近更新 更多