2015-10-16 61 views
0

我想知道,十六进制系统如何在装配中工作?在装配中计数十六进制

可以说我有: 0xFF时, 是0xAB, 0x10C, 是0xA, 0xFC有。 我有一个例子,其中4 + 0xFC = 0xFF 有人可以为我解释每个字母和数字的含义以及它是如何计算的?

+0

我会指出,它的简洁之处在于,我们可以轻松地将二进制数转换为十六进制数。每个字节有2个十六进制数字(半字节),每个半字节有4个位。将0xC7转换为1100-0111b或反之亦然 - 将小数点后199转换成任意一个都比较困难。这可以帮助解释为什么人们在编程中经常使用十六进制数字 – enhzflep

回答

2

你真的在问十六进制是如何工作的。它的组装方面不会改变任何东西。

十进制,每个数字从0到9(十个不同的值)。

十六进制中,每个数字从0到9,然后到A,然后是B,C,D,E和F(16个不同的值)。

在两者中,当右边的数字携带一个数字时,高位数字递增。

顺便说一句,4 + 0XFC是0x100。

0

您的信息4 + 0xFC = 0xFF是错误的:4 + 0xFC = 0x100

取十六进制数0xFC0x只是一个提示,它是一个十六进制数字 - 它不构成其值FC的一部分。还有其他表达方式,它取决于现行的语法。有些汇编将要0FCh,在这种情况下,h讲述了一个十六进制数字,以及领先的0是从标签FCh区分

AF表示十进制值1015,因为十六进制是基座16和我们通常的计数系统是基座10,所以缺乏那些个位数的值。

以相辅相成的方式,八进制数字系统是基数8,因此我们熟知的十进制数字89未使用。我们首先来看这种表示,因为很难用十六进制进行交谈而不会被十进制弄糊涂。

八进制与其他数字基本系统的工作方式相同。以**表示“上升到功率”,八进制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

习惯十六进制符号可能需要一点时间,但过了一段时间(如学习人类语言时),您将开始以这种方式认为,而不是不断翻译来回。