这很可能是任何人都会问的最愚蠢的问题,但不管我希望我能找到一个明确的答案.
我的问题是 - 整数存储在计算机内存中怎么样?
在c#中,整数的大小为32位.MSDN说我们可以在整数变量中存储-2,147,483,648到2,147,483,647的数字.
根据我的理解,一个位只能存储2个值,即0和1.如果我只能存储0或1,我怎么能在一个位内存储2到9的数字?
更确切地说,我说这个代码int x = 5; 这将如何在内存中表示,或者换句话说如何将5转换为0和1,它背后的惯例是什么?
我有一些基本的疑惑,但每次我坐下来试试面试问题时,这些问题和我的怀疑都会出现.
说A = 5
B = -2
我说A + B. 我假设A和B是4字节CPU怎么做这个添加?我知道A的符号位(MSB)为0表示正整数,B的符号位为1表示负整数.
现在在C++程序中,我想打印A + B,ALU(算术逻辑单元)的加法模块首先检查符号位然后决定进行减法然后按照减法程序进行.如何进行减法将是我的下一个问题.
A = 5
B = 2
想要做AB计算机将需要2秒补充B并添加A + 2s补充并返回此(丢弃左侧的额外位)?
A = 2
B = 5
做AB在这种情况下,计算机是如何做的?
我知道任何if-then等类型的条件逻辑都将在ALU内部的硬件中完成.计算2s补码等,丢弃额外的位将全部在ALU内部的硬件中完成.ALU的这个组件是什么样的?
谢谢,
这可能是一个愚蠢的问题,但仍然没有解决。我确实有一个char数组,说char arr [100]有一些数据
char arry[100] ---- some data;
int test;
memcpy(&test,array+4,sizeof(int))
Run Code Online (Sandbox Code Playgroud)
此memcpy将做什么谢谢SKP