自学内容网 自学内容网

【整型】在内存中如何存储?补码怎么变成源码?加减怎么运算???

2024 - 09 -21 - 笔记 - 16

作者(Author): 仟濹(网名)

整型在内存中的存储

正式学习前要了解的地方:

变量的创建是要在内存中开辟空间的,空间的大小是根据不同的类型而决定的。

整数在内存中都是按照补码的形式存储的。

① 正整数在内存中存储

 int a = 20;
源码 00000000 00000000 00000000 00010100 0x00 00 00 14

反码 00000000 00000000 00000000 00010100

补码 00000000 00000000 00000000 00010100

② 负整数在内存中存储

 
int b = -10;
源码 10000000 00000000 00000000 00001010 0x80 00 00 0a

反码 11111111 11111111 11111111 11110101 0xff ff ff f5

补码 11111111 11111111 11111111 11110110 0xff ff ff f6

④ 为什么整型在内从中使用补码存储呢???

在计算机系统中,数值一律使用补码来表示和存储。原因在于,使用补码可以将【符号位】和【数值域】统一处理

同时加法和减法也可以统一处理(因为CPU只有【加法器】,所以只能进行加法运算,如果想算减法,就要想办法把减法变成加法,然后补码就在这提现用处),此外,【补码】和【源码】相互转换,其运算过程是相同的,不需要额外的硬件电路。

自我理解:负数变成补码,然后 正数的源码(补码 == 源码) - 负数的补码 就是减法

⑤加减是在计算机中是如何进行计算的???

eg:1 - 1 在内存中如何计算的呢???

只能通过补码进行计算,千万不要利用源码进行计算。

 //1-1 就是 1 + (-1)
 ​
 ​
  1  00000000 00000000 00000000 00000001 源码
 -1  10000000 00000000 00000000 00000001 源码
 --------------------------------------
 1-1 10000000 00000000 00000000 00000010//错误
 //10
      
  1  00000000 00000000 00000000 00000001 补码
 -1  11111111 11111111 11111111 11111111 补码
 --------------------------------------
 1-1 10000000 00000000 00000000 00000000//正确
 //0

“知道了源码如何转换成补码,那么补码如何转换成源码呢???

“补码和源码相互转换,其运算过程是相同的,不需要额外的运算”

意思就是 源码得到补码需要进行 取反 +1 补码得到源码也是需要 取反 +1

切记:不是进行反方向的计算(-1 再 取反)

eg:

源码 –> 补码

 源码 10000000 00000000 00000000 00001010 // --> 取反
 反码 11111111 11111111 11111111 11110101 // --> + 1
 补码 11111111 11111111 11111111 11110110
补码 –> 源码

 补码 11111111 11111111 11111111 11110110 //--> 取反
      00000000 00000000 00000000 00001001 // --> + 1
 源码 00000000 00000000 00000000 00000010
 [补码]也只进行了取反+1就能得到[源码]

至于为什么负数变成补码然后相加就是减法运算,这个不需要知道,这就是个特点,就是个规律,知道记住就行了


原文地址:https://blog.csdn.net/m0_60605989/article/details/142425782

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!