使用javascript模拟并行位全加法器
解析:
const A = [1, 0, 0, 1]; const B = [1, 1, 0, 1]; function plus (a, b) {let GList = [], PList = [], res = [];while(a.length) {let ai = a.pop()let bi = b.pop()let Gi = ai && bi;let Pi = ai ^ bi;let worker = new Worker('./worker.js')worker.postMessage({GList, PList})worker.onmessage = (event) => {let ci = event.data;let si = Pi ^ ci;res.unshift(si)}GList.unshift(Gi)PList.unshift(Pi)}let worker = new Worker('./worker.js')worker.postMessage({GList, PList})worker.onmessage = (event) => {res.unshift(event.data)console.log(res)return res;} } plus(A, B)以上 main.jsself.addEventListener('message', function (e) {let GList = e.data.GListlet PList = e.data.PListlet ci = 0;while(GList.length) {let gi = GList.pop()let pi = PList.pop()ci = gi || pi && ci;}self.postMessage(ci)self.close() }, false)以上worker.js