11得票1回答
在golang中,^0是什么?

我看到代码库中有^0。 示例:type stat struct { ... min int64 ... } newStat := stat{min: ^0} ^0是什么意思?

11得票4回答
一个整数在内存中是如何存储的?

这可能是任何人都会问的最愚蠢的问题,但无论如何,我希望我能找到一个清晰的答案。 我的问题是 - 计算机内存中如何存储整数? 在c#中,整数大小为32位。MSDN表示,我们可以在整数变量中存储从-2,147,483,648到2,147,483,647的数字。 按照我的理解,一个位只能存储两...

10得票3回答
使用-1作为无符号(size_t)类型的标志值

我曾经在一个返回类型为size_t(无符号类型)的函数中使用-1作为标志值。 一开始我没有注意到这个问题,特别是因为它并没有导致我的代码出错(我是用x == -1进行检查,而不是x < 0)。 有没有什么微妙的原因让我不能将其保留?它可能在什么情况下表现出意外行为?这种方法常用吗? pt...

10得票10回答
2的补码示例,为什么不需要进位?

我正在观看David Malan的一些精彩讲座(这里),他正在讲解二进制。他谈到了有符号/无符号、反码和补码表示法。进行了4 + (-3)的加法运算,如下所示: 0100 1101 (flip 0011 to 1100, then add "1" to the end) ---- 0001 ...

10得票3回答
按位运算和移位操作

我有些难以理解这段代码的工作原理和原因。我的合作者已经完成了这部分,但我无法联系到他,以便找出这个代码如何以及为什么能够工作。我尝试了几种不同的方法来理解它,但任何帮助都将不胜感激。这段代码使用2的补码和32位表示。/* * fitsBits - return 1 if x can be ...

10得票1回答
Java 二进制字面量 - byte 类型取值为 -128

自从SE 7以来,Java允许将值指定为二进制字面量。文档告诉我'byte'是一种可以容纳8位信息的类型,取值范围为-128到127。 现在我不知道为什么,但是如果我尝试将二进制字面量分配给Java中的一个字节,则只能定义7位而不是8位:byte b = 0b000_0000; //s...

10得票6回答
如何在Python中以二进制补码形式打印有符号整数的十六进制表示?

我有一个负整数(4个字节),我想要得到它的二进制补码形式的十六进制表示。&gt;&gt;&gt; i = int("-312367") &gt;&gt;&gt; "{0}".format(i) '-312367' &gt;&gt;&gt; "{0:x}".format(i) '-4c42f' ...

10得票2回答
在IT技术中,如何将两个有符号或无符号整数相加?

我已经很久没有在位和字节级别上编程了,想确认一下我似乎记得的东西: 假设我有两个长度相等的整数(1、2、4、8个字节;不重要),并将它们加起来:如果它们是有符号或无符号的,它们的按位结果是否会有所不同。换句话说:不管它们是有符号还是无符号整数,它们的位最终是否相同? 我的直觉和脆弱的记忆告...

9得票2回答
长整型的二进制补码

我想使用Intel I64汇编语言进行长整数运算(128位),并需要创建一个二进制补码。假设我的正值存储在RDX:RAX中。 "翻转位并加1"可以完成2的补码。因此,最朴素的实现方式为(4条指令和14字节的代码): NOT RAX NOT RDX ADD RAX,1 ; C...

9得票4回答
检测负二进制

今天在课上,我的计算机老师正在向我们解释(或试图解释)如何使用二进制补码写负数。我的问题是: 最终用户如何确定11101100是236还是-20?我知道你可以始终检查最高有效位,但这总是100%准确的吗?负二进制数的惯例是使最高有效位表示符号吗? 附注: 为什么我们要学习二进制减法,当我们...