首页 > JS 中位取反

JS 中位取反

var a  = 0x0e0e;
这个换算成2进制位 0000 1110 0000 1110
~a则为 1111 0001 1111 0001 
转为16进制后为-3599
但是我现在想不考虑负数,取反后得到正数,也就是直接转为 1111 -> f,0001 -> 1, 1111 ->f, 0001 ->1即(f1f1),大神们有什么好的办法吗?

通过>>>强制转换为unsigned int,如下所示:

// 3598
var a = 0x0e0e;
// -3599
console.log(~a);
// 4294963697
console.log((~a)>>>0);

由于是32位整数,得到的结果也考虑了高16位的1,输出比你预想的要大。

参考:http://stackoverflow.com/a/1908655/2599831


直接a^0xffff不就是你最后的结果吗?


转为16进制后为-3599 是10进制吧。。 表示我也不知道,昨天晚上不知道 >>> 是啥意思,今天就看到了 0.0


用异或每次取4bit

【热门文章】
【热门文章】