반응형
JavaScript에서 단일 비트를 어떻게 설정하고, 지우고, 토글합니까?
JavaScript에서 설정, 지우기, 토글 및 확인하는 방법은 무엇입니까?
비트 마스크를 얻으려면 :
var mask = 1 << 5; // gets the 6th bit
비트가 설정되었는지 테스트하려면 :
if ((n & mask) != 0) {
// bit is set
} else {
// bit is not set
}
조금 설정하려면 :
n |= mask;
조금을 지우려면 :
n &= ~mask;
조금 토글하려면 :
n ^= mask;
Javascript 비트 연산자를 참조하십시오 .
몇 가지를 추가하고 싶습니다 (@cletus 덕분에)
function bit_test(num, bit){
return ((num>>bit) % 2 != 0)
}
function bit_set(num, bit){
return num | 1<<bit;
}
function bit_clear(num, bit){
return num & ~(1<<bit);
}
function bit_toggle(num, bit){
return bit_test(num, bit) ? bit_clear(num, bit) : bit_set(num, bit);
}
비트 가져 오기
function getBit(number, bitPosition) {
return (number & (1 << bitPosition)) === 0 ? 0 : 1;
}
비트 설정
function setBit(number, bitPosition) {
return number | (1 << bitPosition);
}
클리어 비트
function clearBit(number, bitPosition) {
const mask = ~(1 << bitPosition);
return number & mask;
}
업데이트 비트
function updateBit(number, bitPosition, bitValue) {
const bitValueNormalized = bitValue ? 1 : 0;
const clearMask = ~(1 << bitPosition);
return (number & clearMask) | (bitValueNormalized << bitPosition);
}
예제는 JavaScript 알고리즘 및 데이터 구조 저장소 에서 가져 왔습니다 .
@cletus 정보의 도움으로 BitSet 클래스를 만들었습니다.
function BitSet() {
this.n = 0;
}
BitSet.prototype.set = function(p) {
this.n |= (1 << p);
}
BitSet.prototype.test = function(p) {
return (this.n & (1 << p)) !== 0;
}
BitSet.prototype.clear = function(p) {
this.n &= ~(1 << p);
}
BitSet.prototype.toggle = function(p) {
this.n ^= (1 << p);
}
반응형
'Programing' 카테고리의 다른 글
자바 스크립트 컬렉션 (0) | 2020.12.26 |
---|---|
Gson으로 열거 형 직렬화 및 역 직렬화 (0) | 2020.12.26 |
SQLite 매개 변수 대체 문제 (0) | 2020.12.26 |
사용자 지정 속성 (json.net)을 통해 직렬화에서 속성 제외 (0) | 2020.12.26 |
'git remote update', 'git fetch'및 'git pull'의 차이점은 무엇입니까? (0) | 2020.12.25 |