2012-07-25 41 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