我想知道,十六进制系统如何在装配中工作?在装配中计数十六进制
可以说我有: 0xFF时, 是0xAB, 0x10C, 是0xA, 0xFC有。 我有一个例子,其中4 + 0xFC = 0xFF 有人可以为我解释每个字母和数字的含义以及它是如何计算的?
我想知道,十六进制系统如何在装配中工作?在装配中计数十六进制
可以说我有: 0xFF时, 是0xAB, 0x10C, 是0xA, 0xFC有。 我有一个例子,其中4 + 0xFC = 0xFF 有人可以为我解释每个字母和数字的含义以及它是如何计算的?
你真的在问十六进制是如何工作的。它的组装方面不会改变任何东西。
十进制,每个数字从0到9(十个不同的值)。
十六进制中,每个数字从0到9,然后到A,然后是B,C,D,E和F(16个不同的值)。
在两者中,当右边的数字携带一个数字时,高位数字递增。
顺便说一句,4 + 0XFC是0x100。
您的信息4 + 0xFC = 0xFF
是错误的:4 + 0xFC = 0x100
。
取十六进制数0xFC
,0x
只是一个提示,它是一个十六进制数字 - 它不构成其值FC
的一部分。还有其他表达方式,它取决于现行的语法。有些汇编将要0FCh
,在这种情况下,h
讲述了一个十六进制数字,以及领先的0
是从标签FCh
区分值。
A
到F
表示十进制值10
到15
,因为十六进制是基座16和我们通常的计数系统是基座10,所以缺乏那些个位数的值。
以相辅相成的方式,八进制数字系统是基数8,因此我们熟知的十进制数字8
和9
未使用。我们首先来看这种表示,因为很难用十六进制进行交谈而不会被十进制弄糊涂。
八进制与其他数字基本系统的工作方式相同。以**
表示“上升到功率”,八进制74
表示7 x 8**1 + 4 x 8**0
。在这种情况下,8
很容易理解,但在八进制中并不存在。它的定位表示八进制是10
,所以我应该有书面7 x 10**1 + 4 x 10**0
让我们来看看一些补充。在十进制
96 +
4
---
100 (decimal)
因为6 + 4
产生进位也是如此9 + carry
。在八进制同样的方式
74 +
4
---
100 (octal)
因为4 + 4
产生进位也是如此7 + carry
。
十六进制也以相同的方式工作,但它很难描述,因为我们缺乏6个手指来计算。号码FC
表示F x 10**1 + C x 10**0
。在这种情况下10
是十进制的十六进制格式16
。以小数表示,它是15 x 16**1 + 12 x 16**0
。
现在对于十六进制数字,你被错误地建议。
FC +
4
---
100 (hexadecimal)
因为C + 4
产生进位也是如此F + carry
。
十六进制在二进制表示法中有其基础,因为这就是计算机算法的工作原理。十进制数15
是二进制1111
,十进制数12
是二进制1100
。十六进制只是一种更方便的方式来表达二进制,一次取二进制数字(位)4。所以这里的二进制1111
是十六进制的F
和二进制1100
是十六进制的C
。把它们放在一起,二进制11111100
是十六进制的FC
。
十六进制符号(就是这样)在看到较大的值时很有用。人类的思想不能轻易掌握如32位值11011110101011011011111011101111
等一长串系列,但十六进制即为DEADBEEF
。
习惯十六进制符号可能需要一点时间,但过了一段时间(如学习人类语言时),您将开始以这种方式认为,而不是不断翻译来回。
我会指出,它的简洁之处在于,我们可以轻松地将二进制数转换为十六进制数。每个字节有2个十六进制数字(半字节),每个半字节有4个位。将0xC7转换为1100-0111b或反之亦然 - 将小数点后199转换成任意一个都比较困难。这可以帮助解释为什么人们在编程中经常使用十六进制数字 – enhzflep