2012-07-25 54 views
1

我努力学习DCPU和在此之前,我没有使用的二进制,我这么裸涉足...DCPU 16位运算转移

;Set b to 1 
SET B,1 ;00001 (1) 
SHL B,1 ;00010 (2) 
SHL B,1 ;00100 (4) 
SHL B,1 ;01000 (8) 
SHL B,1 ;10000 (16) 

所有我做的是转移到左边一个,这样难道它不应该简单地将每次轮换的时间翻倍...在我的代码中,你可以看到我有最后一轮将注册表B转换为16,但是当B跑到10时为什么会这样。

我知道这是简单的东西,但我觉得很难包住我的头! 感谢提前的帮助下, 雅各

+2

你确定你不是不小心以十六进制显示注册表值吗? :) – 2012-07-25 19:04:14

+0

我希望我能回答所有的代码是在原来的帖子和注册窗口说0x0010,所以我很确定这是十六进制不知道,但我不知道有任何其他方式来查看它 – Bevilacqua 2012-07-25 19:45:37

回答

6

寄存器窗口说×0010 ...

你得到正确的答案,你只是在hexadecimal查看它。

0x开头的数字是表示十六进制数字的标准方式;所以数字0x0010实际上是数字10 (“基数为16的一个零”),十进制数字为十六。

+0

但不应该它是0x0016 – Bevilacqua 2012-07-25 20:19:26

+1

@Bevilacqua - 不是,0x16在十进制表示法中是0d22。 0x10 = 0d16 = 0o20(八进制)= 0b10000(二进制);他们都是相同的号码。 – 2012-07-25 20:25:40

+0

非常感谢您的帮助! – Bevilacqua 2012-07-25 20:30:36