- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Oct
函数有点困惑。 Oct(-8)
不返回 -10,它返回 37777777770。我只会编写自己的函数,但有人知道为什么它会返回如此奇怪的结果吗?
最佳答案
多年来several ways人们一直梦想着用 来表示负数,但为了让这个答案保持在论文的简短部分,我们只考虑二进制补码。1
要计算负数的补码,我们使用以下步骤:
那么二进制补码中的 -8 是多少?首先,让我们将绝对值转换为二进制(为了简单起见,现在我们将使用 8 位。我已经用 32 位数字计算出下面相同的答案。)
|8| => 0000 1000
下一步是对数字中的所有位求补
0000 1000 => 1111 0111
最后我们将结果加 1 以获得二进制补码表示
1111 0111
+ 1
----------
1111 1000 (Don't forget to carry)
好的,简单回顾一下八进制数。八进制或基数 8 是另一种以更紧凑的方式表示二进制数的方法。细心的人会注意到 8 是 2 的幂,我们当然可以利用这一事实将负数转换为八进制。
Oct
产生带有负数的奇怪结果?Oct
函数对数字的二进制表示形式进行操作,将其转换为八进制(基数 8)表示形式。因此,让我们将 8 位数字转换为八进制。
1111 1000 => 11 111 000 => 011 111 000 => 370
请注意,由于 8 = 2^3
很容易转换,因为我们所要做的就是将数字分成三位组并转换每个组。 (很像如何通过分成 4 位组来转换十六进制。)
Oct
生成常规结果?使用 Oct
将数字的绝对值转换为八进制。如果数字小于0,则在前面加负号。
我们会留在-8,因为它一直对我们很好。因此,将 -8 转换为二进制补码得出:
Convert: 0000 0000 0000 0000 0000 0000 0000 1000
Invert: 1111 1111 1111 1111 1111 1111 1111 0111
Add 1: 1111 1111 1111 1111 1111 1111 1111 1000
Separate: 11 111 111 111 111 111 111 111 111 111 000
Pad: 011 111 111 111 111 111 111 111 111 111 000
Convert: 3 7 7 7 7 7 7 7 7 7 0
Shorten: 37777777770
这将产生您在调用 Oct(-8)
时看到的结果。
有了这些知识,您现在还可以解释为什么 Hex(-8)
生成 0xFFFFFFF8
。 (您可以明白为什么我在大部分时间里都使用 8 位数字。)
1 有关二进制数的详细介绍,请查看 Wikipedia article
关于vb.net - VB.NET 中的八进制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32013062/
需要帮助将这些给定的数字打印成星号,但我是编程新手;我该怎么做? #include int main(void) { int a[5]={20,1,5,15,12}; int i=0
使用 Delphi XE 2 我试图确定缩放方向以将缩放效果应用于图像(TImage),但没有找到执行此操作的函数,并且图像的 OnGesture 事件中的 EventInfo 属性没有此信息. 我见
我不知道制服在内存中是如何表示的。 制服似乎会占用宝贵的寄存器空间,但它们最终会传入/通过/传出到全局内存中,对吗? 制服不用时情况会发生变化吗?编译器可以将它们优化掉吗?--在这种情况下,我已经将无
我正在尝试在名为“timeclock”的模型上记录“time_in”和“time_out”记录。这是我想做但无法开始工作的事情! 检查最后一个时钟条目,看看它是否同时填充了“time_in”和“tim
我想听听您如何解决这种编程任务!?每种类型(OPER = 1 类型)对应一种特定的信息。 这只是大约 10 个具有相同结构的规范之一。首选创建这些“转换器”(协议(protocol))的通用方法。 最
我正在使用 Rest API(NodeJS、Express)和 PostgreSQL 制作 React-Native 应用。 在我的本地机器上托管时一切正常。当 API 托管在我的机器上并且 Post
我是一名优秀的程序员,十分优秀!