原码反码补码

简介: 原文:原码反码补码原码:  -16  =  10010000    1表示符号位(1负0正) 反码:  -16  =  11101111    补码:  -16  =  11110000   原码:   9  =  00001001    1表示符号位(1负0正) 反码:   9  = ...
原文: 原码反码补码

原码:  -16  =  10010000    1表示符号位(1负0正)

反码:  -16  =  11101111   

补码:  -16  =  11110000

 

原码:   9  =  00001001    1表示符号位(1负0正)

反码:   9  =  00001001  

补码:   9  =  00001001

 

-16 + 9

11110000

+  00001001

   11111001(补码)

 

11111001的反码 10000110

11111001的原码 10000111 = -7

 

-7  原码  100000111

-7  反码  111111000

-7  补码  111111001

 

补码减1得到反码,反码取反得到原码

-----------------------------------------------------------------

#include<stdlib.h>
#include<stdio.h>
int main(int argc, char* argv[])
{
 short a, b, c;
 a = 32767;
 b = a + 1;
 c = b + 1;
 printf("%d\n", sizeof(a));
 printf("a = %d, b = %d, c = %d", a, b, c);
 getchar();
 return EXIT_SUCCESS;
}

运行结果:

因为a = 32767,正数的原码反码补码都是一样,内存中数据用补码表示,所以a在内存中表示为0111 1111 1111 1111

1在内存中的表示为0000 0000 0000 0001

于是a + 1 对补码进行与运算得到

     0111 1111 1111 1111

     0000 0000 0000 0001

---------------------------------------

     1000 0000 0000 0000

 而1000 0000 0000 0000最高位是1表示负数,又因为其是补码,补码减1取反得到:

     1000 0000 0000 0000

     0000 0000 0000 0001

------------------

     1111 1111 1111 1111

对1111 1111 1111 1111 取反得到

   1000 0000 0000 0000 值为-32768

因为-32768 在内存中的补码为: 1000 0000 0000 0000

当-32768 + 1 表示为:

   1000 0000 0000 0000

   0000 0000 0000 0001

-------------------------------------------------

  1000 0000 0000 0001

1000 0000 0000 0001为补码,对其减1取反:

   1000 0000 0000 0001

   0000 0000 0000 0001

-----------------------------------

   1000 0000 0000 0000

对1000 0000 0000 0000取反得到:

   1111 1111 1111 1111表示数值-32767

 

目录
相关文章
|
3月前
原码、反码、补码的互相转换
原码、反码、补码的互相转换
32 0
|
1月前
原码反码补码移码的介绍和计算
原码反码补码移码的介绍和计算
50 0
|
4月前
|
存储
原码,反码,补码以及计算
原码,反码,补码以及计算
23 0
|
10月前
原码补码反码
原码补码反码
88 0
|
存储
数制间的转换,原码、反码、补码
数制间的转换,原码、反码、补码
401 0
数制间的转换,原码、反码、补码
|
存储
一篇轻松带你Carry原码、反码、补码(建议收藏)
一篇轻松带你Carry原码、反码、补码(建议收藏)
170 0
原码、反码、补码
原码、反码、补码区别
116 0
正数、负数求原码、反码、补码
正数、负数求原码、反码、补码
194 0
|
Go 开发者
原码 反码 补码|学习笔记
快速学习原码 反码 补码。
62 0
|
Java
进制转换、原码、反码、补码及位运算详解
进制转换、原码、反码、补码及位运算的简单示例
483 1
进制转换、原码、反码、补码及位运算详解

热门文章

最新文章