Javascript 如何计算表示任何负值需要多少位?
我想知道是否有一个计算允许我获得存储任何负(有符号)值(如-1、-255、-1324等)所需的位数 目前,我已经实现了一个函数来计算大于等于0的值:Javascript 如何计算表示任何负值需要多少位?,javascript,c++,binary,decimal,signed,Javascript,C++,Binary,Decimal,Signed,我想知道是否有一个计算允许我获得存储任何负(有符号)值(如-1、-255、-1324等)所需的位数 目前,我已经实现了一个函数来计算大于等于0的值: calculateBitsNeeded = function (value) { if (value == 0) { return 1; } else if (value > 0) { return Math.floor(Math.log(value) / Math.LN2) +
calculateBitsNeeded = function (value) {
if (value == 0) {
return 1;
}
else if (value > 0) {
return Math.floor(Math.log(value) / Math.LN2) + 1;
}
else {
//TODO ...
}
};
例如:如果我有数字-38,我需要7比特来存储(101 1010)
感谢您的帮助:)假设您谈论的是整数 要回答您的问题,您必须了解,在所有现代平台上,整数要么被认为是有符号的,要么是无符号的 JavaScript实际上不支持整数,它们存储为浮点值。然而,64位浮点数可以完全准确地处理53位整数,因此它可以轻松地处理C使用的16位整数 我将忽略这些,并将我的答案限制为16位整数,您将使用这些整数与C进行对话 16位无符号整数的值可以为:
0-65535
有符号整数的值可以是:−32768到32767
在这两种编码下,数字0-32767
的存储方式相同。处理上没有区别
但是,数字32768-0
是使用名为的系统存储的
位方面,数字-1
和32768
是相同的<代码>-2和32767
是相同的
因此,计算负整数所需位的最简单方法是将其转换为有符号等效项 JS中以64位格式存储的任何数字。@hindmost:是的,我知道。但是我正在编写一个应用程序,它与一个非常低的底层的C++服务器通信。所以事实上,我必须处理ArrayBuffers等问题。还要照顾好我的零碎东西;)所以你的问题与Javascript无关。用
C++
来标记它好吧,这个问题与任何编程语言都没有特别的关系,它指的是it和软件。我的应用程序是用JavaScript构建的,但不管怎样,我已经用C++标记了它……它只支持53个整数?你是说所有53位整数?53位。谢谢你接电话。