我有一個位元組,我想將剩下的第一位加 1(背景關系是一個小的康威生命游戲)。
示例:11 是0000 1011:
- 我想增加
101 - 5 1 = 6 是
110 - 將第一位重置為初始狀態
- 位元組現在
0000 1101是 13
問題:
- 有沒有一種方法可以
addNeighbour作為void方法進行(我找不到不回傳的方法num)? - 有沒有更好的方法來執行
addNeighbour操作:
const getBinaryRepresentation = (number) => {
let str = "";
for (let i = 7; i >= 0; i--) {
((number & (1 << i)) != 0) ? str = "1" : str = "0";
}
console.log(str)
}
let num = 5;
getBinaryRepresentation(num) // 0000 0101
const addNeighbour = (num) => {
const isAlive = num & 1;
const neighbours = num >> 1;
num = (neighbours 1) << 1;
if (isAlive === 1) num |= (1 << 0)
return num;
}
num = addNeighbour(num);
getBinaryRepresentation(num) // 0000 0111
uj5u.com熱心網友回復:
有沒有一種方法可以
addNeighbour作為 void 方法進行(我找不到不回傳的方法num)?
不,如果您不回傳結果,則無法將其分配回num. 并且您不能傳遞let num對函式應該從中讀取和存盤的(或任何其他)變數的參考。
有沒有更好的方法來執行
addNeighbour操作
是的。在次低有效位位置添加1與在最低有效位添加相同2。將您的代碼替換為
num = 2;
換個說法,
(((num >> 1) 1) << 1) | (num & 1)
≡ (((num >> 1) << 1) (1 << 1)) | (num & 1)
≡ ((num & ~1) (1 << 1)) | (num & 1)
≡ ((num & ~1) | (num & 1)) (1 << 1)
≡ num (1 << 1)
uj5u.com熱心網友回復:
由于您不能byRef在 javascript 中使用簡單值,因此您不能回傳 void 并在函式之外更改變數。
不過,您可以通過重用變數來優化函式:
const getBinaryRepresentation = (number) => {
return console.log(number.toString(2).padStart(8, 0));
}
let num = 5;
getBinaryRepresentation(num) // 0000 0101
const addNeighbour = (num) => {
const isAlive = num & 1;
num >>= 1;
num = (num 1) << 1;
return num | isAlive;
}
num = addNeighbour(num);
getBinaryRepresentation(num) // 0000 0111
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/463370.html
標籤:javascript 位运算符 位移 箭头函数
