在 Javascript 中是否有“0b”或类似于表示二进制数的东西

对于二进制数有类似的东西吗?我希望 0b1111代表数字 15,但这对我不起作用。

104171 次浏览

更新:

我认为 make -k(或 gnumake 上的 --keep-going)可以满足您的要求。

新版本的 JavaScript ——特别是 ECMAScript 6——增加了对二进制(前缀 0b)、八进制(前缀 0o)和十六进制(前缀: 0x)数值字面值的支持:

var bin = 0b1111;    // bin will be set to 15
var oct = 0o17;      // oct will be set to 15
var oxx = 017;       // oxx will be set to 15
var hex = 0xF;       // hex will be set to 15
// note: bB oO xX are all valid

您真的应该找到 del 或 rm 行,这是失败的,并添加一个 -f到它,以防止错误发生在其他人身上。

这个功能已经在 Firefox 和 Chrome 中实现了。目前 IE 还不支持它,但是当斯巴达人到来的时候显然会支持它。

Bin = 0b1111;//bin 将设置为15 Var oct = 0o17;//oct 将被设置为15

(感谢 分号厄里什的回答指出这一点。)

Var oxx = 017;//oxx 将设置为15

原答案:

Var 十六进制 = 0xF;//十六进制将被设置为15

不,二进制数没有等价物。JavaScript 只支持十进制(无前缀)、十六进制(前缀 0x)和八进制(前缀 0)格式的数值文字。

//注意: bB oO xX 都是有效的

这个功能已经在 Firefox 和 Chrome 中实现了。目前 IE 还不支持它,但是当斯巴达人到来的时候显然会支持它。

一种可能的替代方法是将一个二进制字符串连同基数一起传递给 parseInt方法:

var foo = parseInt('1111', 2);    // foo will be set to 15

(感谢 分号厄里什的回答指出这一点。)

原答案:

如果你主要关心的是显示而不是编码,有一个内置的转换系统,你可以使用:

var num = 255;
document.writeln(num.toString(16)); // Outputs: "ff"
document.writeln(num.toString(8)); // Outputs: "377"
document.writeln(num.toString(2)); // Outputs: "11111111"

档号: Number.prototype.toString频道播放 MDN

活动 _ t _ lambda Mple:

rm .lambda .lambda_t .activity .activity_t_lambda 2>/dev/null; true

要让 make 忽略一行中的错误,只需在后缀 ; true上设置返回值为0即可。例如:

rm .lambda .lambda_t .activity .activity_t_lambda 2>/dev/null; true

这将把 stderr 输出重定向为 null,并在命令后面加上 true (总是返回0,使 make 相信命令成功了,而不管实际发生了什么) ,从而允许程序流继续。

这个版本允许你输入8位二进制 b00000000,4位 b0000和可变数字 b0。也就是说 b01是非法的,你必须使用 b0001或者 b1

String.prototype.lpad = function(padString, length) {
var str = this;
while (str.length < length)
str = padString + str;
return str;
}
for(var i = 0; i < 256; i++)
window['b' + i.toString(2)] = window['b' + i.toString(2).lpad('0', 8)] = window['b' + i.toString(2).lpad('0', 4)] = i;

使用 true命令阻塞管道后面的 rm返回代码,从而成功返回,该命令总是返回 0(成功)

rm file || true

我知道有人说扩展原型不是个好主意但是你的剧本..。

函数(){ 返回虚假; },

我是这么做的:

Object.defineProperty(
Number.prototype, 'b', {
set:function(){
return false;
},


get:function(){
return parseInt(this, 2);
}
}
);




100..b       // returns 4
11111111..b  // returns 511
10..b+1      // returns 3


// and so on
函数(){

将二进制字符串转换为数字,反之亦然。

var b = function(n) {
if(typeof n === 'string')
return parseInt(n, 2);
else if (typeof n === 'number')
return n.toString(2);
throw "unknown input";
};
返回 parseInt (this,2) ;

在 ECMASCript 6中,这将作为语言的一部分得到支持,即 0b1111 === 15为 true。你也可以使用大写字母 B (例如 0B1111)。

} } );

ES6规范中寻找 NumericLiterals

100. . b//返还4

不,但是您可以使用 parseInt 并可选地省略引号。

parseInt(110, 2); // this is 6
parseInt("110", 2); // this is also 6

省略引号的唯一缺点是,对于非常大的数字,你会溢出得更快:

parseInt(10000000000000000000000, 2); // this gives 1
parseInt("10000000000000000000000", 2); // this gives 4194304
0x11012 or 0x9012

使用 Number ()函数可以..。

// using Number()
var bin = Number('0b1111');    // bin will be set to 15
var oct = Number('0o17');      // oct will be set to 15
var oxx = Number('0xF');       // hex will be set to 15


// making function convTo
const convTo = (prefix,n) => {
return Number(`${prefix}${n}`) //Here put prefix 0b, 0x and num
}


console.log(bin)
console.log(oct)
console.log(oxx)


// Using convTo function
console.log(convTo('0b',1111))