标签:整型 数据结构 math 比较 无符号数 并且 class size 等价
1.无符号数与有符号数比较
有时我们可能会遇到一些数据结构的大小的判定,比如判断两个堆(假设为heap1,heap2)中元素个数差值是否大于1
heap1.size() - heap2.size() > 1
heap1.size() > heap2.size() + 1
看似等价的两个比较的不等式,产生的效果未必相同
由于数据结构的大小采用的往往是无符号整型数,如果heap1.size() - heap2.size()的结果为负数,比如\(-1\),在无符号数中实际为\(4294967295\),二进制表示为\(11111111111111111111111111111111\),可以看出无符号数会将有符号数补码的符号位当作正常的数位,所以对应的数值就会很大,显然与我们的判断目的相违背
并且还需要注意,无符号数与有符号数比较时,要将有符号数转化为无符号数
标签:整型 数据结构 math 比较 无符号数 并且 class size 等价
原文地址:https://www.cnblogs.com/G-H-Y/p/14493750.html