社区首页 >问答首页 >如何比较两个BigInteger变量作为无符号?

如何比较两个BigInteger变量作为无符号?
EN

Stack Overflow用户
提问于 2018-02-12 07:47:28
回答 1查看 142关注 0票数 2

我有两个BigInteger变量,其值从8个字节数组初始化:

代码语言:javascript
代码运行次数:0
复制
maxOne: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
midOne: 8000:8000:8000:8000:8000:8000:8000:8000

我想使用一个BigInteger比较方法,它将返回maxOne大于midOne。

然而,我总是得到相反的结果。即midOne大于maxOne。

在内部,我可以看到它们存储为:

maxOne:

代码语言:javascript
代码运行次数:0
复制
mag[0]: 1
signum: -1

midOne

代码语言:javascript
代码运行次数:0
复制
mag[0]: 7FFF7FFF
mag[1]: 7FFF7FFF
mag[2]: 7FFF7FFF
mag[3]: 7FFF8000
signum: -1

当两者都具有signum=-1 (例如-3小于-1)时,我会认为“较大的绝对值”小于“较小的绝对”值。

但出于某种原因,maxOne.compareTo(midOne)返回-1。

在检查他们的BigInteger.doubleValue()时,我发现

代码语言:javascript
代码运行次数:0
复制
maxOne = -1.0
midOne = -1.7013858727242528 E38

即使compareTo()使用doubleValue()进行比较,maxOne > midOne。

那么,为什么比较结果正好相反呢?

无论哪种方法,我都有兴趣将它们作为两个无符号整数进行比较。有办法做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-12 07:59:56

我建议把一个零字节放在最重要的位置。这样,在创建BigInteger时,就不会出现任何符号位。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48750285

复制
相关文章
php中有两个美元符号$$的变量——可变变量
以上代码的第二句,我们是用两个美元符号的变量,那么在这里这个变量是我们可变变量。我以下从第一句开始详细解释:
1_bit
2021/01/14
2.2K0
如何检测无符号整数乘法溢出
我在写一个程序计算 a ^ b = c 其中 a、b、c 都是无符号整数。为了检测乘法溢出,我写了下面的检测程序,
ClearSeve
2022/02/10
1.3K0
无符号数和有符号数
人有十个手指头,习惯了逢十进一,于是十进制成了生活中的标准。程序的世界只有高低电平两种状态,更适合用二进制来表示,于是二进制成了程序世界的标准。 对与无符号数来说,我们更喜欢谈他们之间的转化,十进制是我们最习惯的进制,于是十进制转为R进制,R进制转为十进制变尤为重要。
naget
2019/07/03
3K0
无符号数和有符号数
无符号整型和有符号整型的区别,以及无符号整型的使用
size_t 等价于unsigned int 接收sizeof的返回值要用%u
大忽悠爱学习
2021/03/04
4.4K0
如何比较两个JavaScript对象
两个月以前在公众号发过一个图片消息,标题是 How to compare two objects in JavaScript,有一个关注了我的同事第二天告诉我说看不懂。看不懂是结果,而为什么看不懂则是导致这一结果的过程。我试着揣测了她看不懂的过程,大概有这些原因:
kyrieliu
2020/07/01
1.5K0
mysql无符号整型溢出
下午用sql的时候突然想到这个问题,徒手测试了一下,结果还真令人意外: 首先创建一张测试用表 mysql> CREATE TABLE `t1` ( -> `id` int UNSIGNED NOT NULL AUTO_INCREMENT , -> `val` int UNSIGNED NOT NULL DEFAULT 0 , -> PRIMARY KEY (`id`) -> ); Query OK, 0 rows affected (0.04 sec) 初始化一条数据: mysql> insert in
码农二狗
2018/06/29
2K0
FPGA设计中 有符号数、无符号数
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
FPGA技术江湖
2020/12/29
1.7K0
FPGA设计中 有符号数、无符号数
移位运算(无符号移位运算,有符号移位运算)
可以移位运算的类型有:iuint,int,lang等类型.我们本次使用int类型 一个int类型占4个字节,共32位,带符号位,所以最高位位符号位(使用0,1表示符号位)
全栈程序员站长
2022/09/14
1.4K0
PWN 无符号和有符号整型的绕过漏洞
C语言中,无符号整型数是不带正负表示符号的整型数。C语言在计算机里编译时数都是用二进制表示的,如果最左边这一位不用来表示正负,而是和后面的连在一起表示整数,那么就不能区分这个数是正还是负,就只能是正数,这就是无符号整型数。
yulate
2023/05/02
9660
PWN 无符号和有符号整型的绕过漏洞
在python中如何比较两个float
奇怪的现象 前几天跟同事聊起来,在计算机内部float比较是很坑爹的事情。比方说,0.1+0.2得到的结果竟然不是0.3? >>> 0.1+0.2 0.30000000000000004 为什么会出现
py3study
2020/01/06
4.2K0
基础野:细说无符号整数
Brief                                 本来只打算理解JS中0.1 + 0.2 == 0.30000000000000004的原因,但发现自己对计算机的数字表示和运算十分陌生,于是只好恶补一下。   本篇我们一起来探讨一下基础的基础——无符号整数的表示方式和加减乘除运算。 Encode                                 无符号整数只能表示大于或等于零的整数值。其二进制编码方式十分直观,仅包含真值域。   我们以8bit的存储空间为例,真值域则
^_^肥仔John
2018/01/18
1.3K0
基础野:细说无符号整数[通俗易懂]
本来只打算理解JS中0.1 + 0.2 == 0.30000000000000004的原因,但发现自己对计算机的数字表示和运算十分陌生,于是只好恶补一下。
全栈程序员站长
2022/09/20
1.4K0
C++ 中有符号类型到无符号类型的转换
为了更好地解释下面的代码,先来介绍一些背景知识,在我的计算机中, char 类型占 8 个比特位,那么, unsigned char 类型能表示的数的范围为 0 ~ 2的8次方 - 1,即 0 ~ 255,共 256 个数;int 类型占 32 个比特位,那么 unsigned 类型所能表示的数的范围为 0 ~ 2的32次方 - 1,即 0 ~ 4294967295,共 4294967296 个数,接下来看下面的代码:
用户7886150
2021/02/15
1.4K0
3,变量与标点符号
与C等许多编程语言相比,作为动态语言的Python,其变量是一个标签,而不是一个容器。
lyhue1991
2020/07/20
9160
3,变量与标点符号
BigDecimal和BigInteger
我们知道计算机都是以二进制的形式存储数据的,而我们日常则是使用十进制,那么我们的 数字 存进计算机则需一个进制转换的过程,这过程就会损失精度的,就导致浮点数不能用等值判断
晚上没宵夜
2020/11/24
1.2K0
BigInteger方法大全
使用BigInteger类进行操作。这些大数都会以字符串的形式传入。 基础常用方法 BigInteger abs() //返回大整数的绝对值 BigInteger add(BigInteger val) //返回两个大整数的和 BigInteger and(BigInteger val) //返回两个大整数的按位与的结果 BigInteger andNot(BigInteger val) //返回两个大整数与非的结果 BigInteger divide(BigInteger val) //返回
向着百万年薪努力的小赵
2022/11/20
3700
BigInteger方法大全
java大数(BigInteger)
 Math类:   java.lang.Math类中包含基本的数字操作,如指数、对数、平方根和三角函数。   java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(BigDecimal)算法的类。
瑾诺学长
2018/09/21
2.7K0
【R语言经典实例5】如何比较两个向量
比较运算符(==、!=、<、>、<=、>=)能对两向量间的各个元素进行比较。这些运算符也能将向量中所有元素与一个常数进行比较。返回结果是每两个元素间比较结果的逻辑值向量。
统计学家
2019/04/10
6.9K0
六、变量数值计算符号和命令
可以进行小数、整数的运算,很好用 echo "7.7 9.8"|awk '{print ($1+$2),($1*$2)}'
jackxiao
2021/11/16
5890
交换两个变量
问:有变量 a 和 b,将 a 和 b 的值调换 # 解法1:使用其他变量 c c = a a = b b = c # 解法2:不使用其他变量 a = a + b b = a - b a = a - b # 解法3:拆包(python特有的方法) a, b = (b, a) a, b = b, a  # =右边实质是元组
py3study
2020/01/17
8730

相似问题

BigInteger作为中性符号

128

比较符号作为变量

213

BigInteger无符号左移或右移

36

如何比较无符号和有符号的长变量?

33

BigInteger上的Java无符号移位

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文