如何解决为什么在计算机内存中将大正数存储为负数?
我使用的是 C++14。 int 的大小为 4 个字节。
这是我的代码:
#include<iostream>
using namespace std;
int main()
{
int a=4294967290;
int b=-6;
if(b==a)
cout<<"Equal numbers";
}
这将输出为等号,这意味着 4294967290 在内存中以二进制格式等于 -6。 那么大的正数和负数是如何区分的呢? 这只适用于 C++ 还是任何其他编程语言?
解决方法
位就是位。位的含义由您决定。
让我们谈谈 8 位数量,以方便我们理解。考虑位模式
1 0 0 0 0 0 0 0
“什么意思”?
如果你想把它看作一个无符号的二进制整数,它是 128(等于 2 的 7 次方)。
如果您想将其视为二进制补全表示中的有符号二进制整数,则为 -128。
如果你想把它当作一个符号和大小表示的有符号二进制整数(没有人再这样做了),它是 -0。这是我们不这样做的原因之一。
简而言之,大正数与负数的区别在于程序员知道他想要这些位的含义。这是比特本身不存在的东西。
像 C/C++ 这样的语言有有符号和无符号类型来提供帮助(例如,通过定义 1000 0000 是大于还是小于 0000 0000),但总会有一些陷阱你需要注意,因为整数与现实世界不同,计算机硬件是有限的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。