gpt4 book ai didi

javascript - 如何计算需要多少位来表示任何负值?

转载 作者:行者123 更新时间:2023-11-28 06:44:22 25 4
gpt4 key购买 nike

我想知道是否有一种计算方法可以让我获得存储任何负(有符号)值(例如 -1、-255、-1324 等)所需的位数?

目前我已经实现了一个函数来计算大于等于 0 的值:

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 位 float 可以完全准确地处理 53 位整数,因此它可以轻松处理 C 使用的 16 位整数。

我将忽略这些并将我的回答限制为您用来与 C 对话的 16 位整数。

16 位无符号 位整数可以具有以下值:0 - 65535

一个有符号整数可以有以下值:−32,768 到 32,767

在两种编码下,数字0 - 32,767 的存储方式相同。处理上没有区别。

但是,数字 32,768 - 0 是使用名为 two's compliment 的系统存储的.

在位方面,数字 -132,768 是相同的。 -232,767 是一样的。

因此,计算负整数所需位的最简单方法是将其转换为带符号的等价物。

关于javascript - 如何计算需要多少位来表示任何负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25287394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com