【整型】在内存中如何存储?补码怎么变成源码?加减怎么运算???
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)!