js實現(xiàn)無符號整數(shù)按位取反方式
前言
最近有一段時間沒寫文章了,工作上比較忙,剛好今天有人問到我這個問題,我就去補(bǔ)了一下功課。然后在js上實現(xiàn)了一下。
什么是無符號整數(shù)和有符號整數(shù)?
- 有符號就是最高位是符號位,其余的位是數(shù)據(jù)位。
- 無符號就是所有位都是數(shù)據(jù)位。
比如char類型是8位的,其中最高位是符號位1=0b00000000,-1=0b11111111(這里涉及到了補(bǔ)碼),它能表示的范圍是-128~+127。
unsigned char 是無符號字符型也是8位,它沒有符號位,最高位是數(shù)據(jù)位,比如1=0b00000001,255=0b11111111,它的范圍是0~255。
嗯,大概就是這么個意思了。
其實要實現(xiàn)的功能就是比如: 無符號整數(shù)取反
- 0b00110100
- 0b11001011
對比一下很明白吧!0和1反過來了。
要怎么實現(xiàn)呢
簡單的處理方式,無非就是0變1,1變0嘛。
下面實現(xiàn)代碼:
/**
* @msg:
* @param {number,string} hex 十六進(jìn)制數(shù)字或者字符
* @param {string} len 位長度
* @return {string} 返回十六進(jìn)制字符
*/
function unsignedToReverse(hex,len){
try{
let bitArr;
if(typeof hex === 'number'){
bitArr = parseInt(hex);
} else if(typeof hex === 'string'){
bitArr = parseInt(hex,16);
} else {
console.error("hex參數(shù)有誤")
return;
}
bitArr = bitArr.toString(2).padStart(parseInt(len), "0").split('');
let arr = [];
// console.log(bitArr)
bitArr.map((item,index) => {
if(item == 1){
arr[index] = 0
} else if(item == 0){
arr[index] = 1
}
})
return "0x" + parseInt(arr.join(''),2).toString(16);
} catch(err) {
console.error("ERROR: %s",err)
}
}
console.log(unsignedToReverse("0x38",8)) // 打印 0xc7
大概就這樣子。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript parseInt與Number函數(shù)的區(qū)別
在js中,如果你使用parseInt("08"),一般都會認(rèn)為會返回8,然而實際上返回了0.但是用Number("08")返回的才是8.2010-01-01
購物車前端開發(fā)(jQuery和bootstrap3)
針對購物車的操作,進(jìn)行產(chǎn)品數(shù)量的增加減少,刪除購物車中產(chǎn)品項,本文使用JQuery1.11和bootstrap3進(jìn)行購物車開發(fā),感興趣的小伙伴們2016-08-08
JavaScript精煉之構(gòu)造函數(shù) Constructor及Constructor屬性詳解
對象的constructor屬性用于返回創(chuàng)建該對象的函數(shù),也就是我們常說的構(gòu)造函數(shù),除了創(chuàng)建對象,構(gòu)造函數(shù)(constructor) 還做了另一件有用的事情—自動為創(chuàng)建的新對象設(shè)置了原型對象(prototype object)2015-11-11
基于d3.js/neovis.js/neod3.js實現(xiàn)鏈接neo4j圖形數(shù)據(jù)庫的圖像化顯示功能
neovis.js?由vis.js支持的圖形可視化以及來自Neo4j的數(shù)據(jù)。這篇文章主要介紹了基于d3.js/neovis.js/neod3.js實現(xiàn)鏈接neo4j圖形數(shù)據(jù)庫的圖像化顯示功能,需要的朋友可以參考下2022-02-02
深入理解JavaScript系列(7) S.O.L.I.D五大原則之開閉原則OCP
本章我們要講解的是S.O.L.I.D五大原則JavaScript語言實現(xiàn)的第2篇,開閉原則OCP(The Open/Closed Principle )。2012-01-01

