小编Jez*_*ust的帖子

在 C 中使用无符号整数模拟有符号整数

在 Jens Gustedt 的《Modern C》一书中,第 59 页,他解释了如何使用无符号整数来模拟有符号整数。他的示例代码展示了如何实现将两个无符号整数重新解释为有符号整数的比较:

bool is_negative(unsigned a) { 
   unsigned const int_max = UINT_MAX /2;
   return a > int_max;
}

bool is_signed_less(unsigned a, unsigned b) {
   if (is_negative(b) && !is_negative(a)) return false;
   else return a < b; 
} 
Run Code Online (Sandbox Code Playgroud)

我是否误解了这里的某些内容,或者他是否错过了第二个特殊情况 whereis_negative(a) = trueis_negative(b) = false

例如,如果我们想要a = -1b = 1,那么,使用补码,我们可以将它们表示为

unsigned int a = UINT_MAX; 
unsigned int b = 1;    
Run Code Online (Sandbox Code Playgroud)

(例如,对于 4 位整数,我们将有 a = 1111 和 b = 0001)。现在我们有is_negative(a) …

c integer unsigned-integer

22
推荐指数
3
解决办法
3026
查看次数

Python 列表是否与我的数据结构和算法教科书中定义的列表相同?

我正在阅读一本关于数据结构和基本算法的书,以更好地掌握编程。我正在阅读的这本书定义了一些数据结构,例如列表、数组等,并指定了这些数据结构的接口,以及如何使用不同语言的现有数据结构来实现(或构造)它们。例如,它讨论了如何将列表构造为数组或链接单元格。

然而,当我开始查看不同语言中的这些数据类型时,我发现它们并不总是遵循书中定义的接口。

例如,这本书说,在一个列表中,你应该能够一次遍历不同的元素,只从两端开始。例如,如果我想要第三个元素,我必须从第一个元素开始并使用“下一个”操作,直到找到我想要的元素。但是 Python 中的列表具有整数索引,我可以通过使用相应的索引直接访问任何元素。在本书中,索引类型只需是带有比较操作的有序类型即可。(我认为这本书试图通过抽象事物来保持一般性)。

这是否意味着 Python 的列表不是“真正意义上的”列表?还是书中定义的数据结构只是对这些接口的外观的建议,在实践中可能会有很多变化?

我理解这本书的想法是为了更好地理解如何思考数据结构,并介绍一些典型的,所以我倾向于认为后一个答案是正确的。

python data-structures

4
推荐指数
1
解决办法
200
查看次数

标签 统计

c ×1

data-structures ×1

integer ×1

python ×1

unsigned-integer ×1