c# – 一个整数存储在内存中?

前端之家收集整理的这篇文章主要介绍了c# – 一个整数存储在内存中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这最可能是任何人都会问的最愚蠢的问题,但不管我希望我会为此找到一个明确的答案.

我的问题是 – 如何将整数存储在计算机内存中?

在c#中,整数大小为32位. MSDN表示,我们可以将数字从-2,147,483,648到2,647存储在整数变量中.

据我所知,有一点可以只存储2个值,即0& 1.如果我只能存储0或1,那么我怎么能够存储2到9的数据?

更准确地说,我有这个代码int x = 5;这将如何在记忆中代表,换句话说,5如何转换为0和1,以及它背后的惯例是什么?

解决方法

它以二进制表示(基数2). Read more about number bases.在基数2中,您只需要2个不同的符号来代表一个数字.我们通常使用符号0和1.在我们通常的基础中,我们使用10个不同的符号来表示所有的数字,1,2,… 8和9.

为了比较,想想一个不符合我们常规系统的数字.像14.我们没有符号14,所以我们如何代表它?很简单,我们只是结合了我们的符号1和4中的两个.基数10中的14表示1 * 10 ^ 1 4 * 10 ^ 0.

基数2(二进制)中的1110表示1 * 2 ^ 3 1 * 2 ^ 2 1 * 2 ^ 1 0 * 2 ^ 0 = 8 4 2 0 = 14.因此,尽管没有足够的符号代表14,单一符号,我们仍然可以代表它在两个基地.

在另一个常用的基础中,基数16也称为十六进制,我们有足够的符号来表示14,只使用其中的一个.你通常会看到十六进制使用符号e写入14.

对于负整数,我们使用一个称为二进制补码的方便表示,它是补全(所有1翻转为0,所有0翻转为1),并添加一个.

这有两个主要原因是如此方便:

>我们立即知道一个数字是否定为负数,通过查看一个位,在我们使用的32中最显着的位.>在数学上,x-y = x -y使用常规的加法,就像在小学时期学到的一样.这意味着如果处理器已经添加了,那么处理器不需要做任何特殊的减法实现.他们可以简单地找到y的二进制补码(调用,翻转比特并添加一个),然后使用它们已经具有的加法电路添加x和y,而不是使用特殊的减法电路.

猜你在找的C#相关文章