嘿傢伙,今天我受到了Mincraft製造的16位ALU的啓發,嘗試製作自己的自我擴展加法器。 我今天從字面上開始使用JavaScript,過去幾天一直在玩邏輯門。所以我對此很新。幫助JavaScript自我擴展鑽頭
這是我的代碼到目前爲止。
<html>
<body>
<script type="text/javascript">
function add(ai, bi) {
var newadd = [ai.length+1];
for(i = 0 ; i < ai.length ; i ++) {
if(i>0) {
newadd[i]=fullAdd(ai[i],bi[i],fullAdd(ai[i-1],bi[i-1],0).charAt(1)).charAt(0);;
}
else {
newadd[i]=fullAdd(ai[i],bi[i],0).charAt(0);
}
}
return newadd;
}
function fullAdd(ai, bi, ci) {
var ao = ((ai^bi)^ci);
var co = (((ai^bi)&ci)|(ai&bi));
return ao+""+co;
}
var a = [1,0];
var b = [0,1];
document.write("a + b = " + add(a,b));
</script>
</body>
我在做什麼錯? 我敢肯定這是愚蠢的或愚蠢的,或者我的自我設計的系統不起作用。 無論如何感謝您的幫助提前! -Devan
注意:全加器確實工作並返回它應該的字符。問題是添加功能。
編輯:固定2個明顯的錯誤
EDIT2:我已經改變了add函數有點接近答案。
EDIT3:解決了,這裏要說的是工作
<html>
<body>
<script type="text/javascript">
function add(ai, bi) {
var newadd = [ai.length+1];
for(i = 0 ; i < ai.length+1 ; i ++) {
if(i>0) {
newadd[i]=fullAdd(ai[i],bi[i],fullAdd(ai[i-1],bi[i-1],0).charAt(1)).charAt(0);;
}
else {
newadd[i]=fullAdd(ai[i],bi[i],0).charAt(0);
}
}
return newadd;
}
function fullAdd(ai, bi, ci) {
var ao = ((ai^bi)^ci);
var co = (((ai^bi)&ci)|(ai&bi));
return ao+""+co;
}
var a = [1,0,1,1];
var b = [0,1,0,1];
document.write("a + b = " + add(a,b));
</script>
</body>
謝謝你們的代碼!
是的,我剛剛解決它,使用你使用的變化。 (for語句中的ai.length + 1) – 2010-10-12 06:49:53