整型数据在内存当中的存放形式
2014-12-09 17:01
162 查看
整型数据在内存中以二进制补码形式进行存储,n位二进制补码的计算公式为:[x]补=2n+x
如:[-1]补=28+(-1)=255=1 111 1111B
二进制减法口算方法:由n个二进制1组成,即:,因此,比该数略小的数只须将若干相应位权的1改为0即可。如,
250=(2^8-1)-5=1111 1111B-101B=1111 1010B
二进制加法口算方法:由1个1和n个0构成的二进制数组成,即:,因此,比该数略大的数只须将若干相应位权的0改为1即可。如,
16若干倍的数可先转换成十六进制数再转换成二进制数,如
176=11*16+0=0B0H=0xB0=10110000B
161=10*16+1=0A1H=0xA1=10100001B
正数求补码的方法:符号位为0,数值转换为n-1位二进制数得原码;正数反码和补码同原码。
负数求补码的方法:符号位为1,数值转换为n-1位二进制数得原码;将原码数值位取反得到反码,再将反码数值未位加1得补码。由此可见,对于负数,同一个数的原码、反码、补码是不同的。如求-1补码的步骤如下:
![](http://img.blog.csdn.net/20141209170034305?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdsajE2Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
补码符号位扩展或压缩数值不变(高位增减符号值不变),如
[-1]补=1 111 1111B=1111 1111 1111 1111B
[+1]补=0 000 0001B=0000 0000 0000 0001B
如:[-1]补=28+(-1)=255=1 111 1111B
二进制减法口算方法:由n个二进制1组成,即:,因此,比该数略小的数只须将若干相应位权的1改为0即可。如,
250=(2^8-1)-5=1111 1111B-101B=1111 1010B
二进制加法口算方法:由1个1和n个0构成的二进制数组成,即:,因此,比该数略大的数只须将若干相应位权的0改为1即可。如,
16若干倍的数可先转换成十六进制数再转换成二进制数,如
176=11*16+0=0B0H=0xB0=10110000B
161=10*16+1=0A1H=0xA1=10100001B
正数求补码的方法:符号位为0,数值转换为n-1位二进制数得原码;正数反码和补码同原码。
负数求补码的方法:符号位为1,数值转换为n-1位二进制数得原码;将原码数值位取反得到反码,再将反码数值未位加1得补码。由此可见,对于负数,同一个数的原码、反码、补码是不同的。如求-1补码的步骤如下:
补码符号位扩展或压缩数值不变(高位增减符号值不变),如
[-1]补=1 111 1111B=1111 1111 1111 1111B
[+1]补=0 000 0001B=0000 0000 0000 0001B
相关文章推荐
- (转载)对内存数据存放形式的很好的说明
- 整型数据和字符串数据在内存中的存放
- 各类数据在内存中的存放形式的问题
- 7.14 将例7.13以二进制形式存放在磁盘文件中的数据读入内存,并在显示器上显示。
- float 变量在内存当中的存放形式
- (转载)对内存数据存放形式的很好的说明
- 数据在内存中始终是以二进制形式存放的。数值是以补码表示的
- 数据在内存中始终是以二进制形式存放的,数值是以补码表示的
- 数据在内存中存放的形式
- 论C/C++数据在内存中的二进制存放形式
- C++float数据在内存中的表示形式
- 数据在内存中各种形式
- 有符号的整数-负数在内存的存放形式
- 有符号的整数-负数在内存的存放形式
- 整型数据和字符串数据在内存中的存放
- 指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码是指令还是数据
- 字符数据在内存中的存储形式及使用方法
- 使用程序获取整型数据和浮点型数据在内存中的表示---gyy整理
- 回顾:字符数据在内存中的存储形式以及其使用方法
- 临时表的表结构和数据都存放在内存里。内存表的表结构存放在磁盘上,只有数据存放在内存里