当前位置: 首页 > news >正文

原码反码补码

原码:  -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

 

转载于:https://www.cnblogs.com/dingyingsi/p/3145679.html

http://www.xdnf.cn/news/820711.html

相关文章:

  • Android开发之修改系统开机Logo与开机动画
  • Windows 7 杜比软件安装
  • 如何快速搭建网站(小白教程)(48小时内完成)
  • 【广工考试笔记】计算机网络考试速成笔记
  • 搜索引擎工作原理
  • 通过IP地址和子网掩码与运算计算相关地址
  • Java如何配置环境变量
  • 基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法(Matlab代码实现)
  • JAVA正则表达式语法大全
  • OKCC外呼中心配置的电话系统规则
  • 基于粒子群优化 (PSO) 对太阳能电池板进行最大功率点跟踪(MPPT)(Matlab代码实现)
  • 【深度学习】使用d2l包和相关环境配置的一些血泪心得
  • 远程访问 client and server
  • 图像处理----lena图像的由来
  • HG255D[OpenWrt]刷机
  • 一些网盘地址分享
  • cocostudio与cocosbuilder对比整理
  • 企业补丁管理必备的11个关键步骤
  • Redis Desktop Manager(Redis可视化工具)安装及使用教程
  • FME转换器 文本替换(StringReplacer)
  • SQL SERVER取时间书写方法大全
  • 10大常见网络安全攻击手段及防御方法总结
  • 国内三大PTPrivate Tracker站分析
  • AUTOIT教程
  • 计算机体系结构:编译器预取例题(优化前后失效次数计算)
  • 配置pcanywhere来远程管理服务器
  • 图的定义和各种术语总结
  • 关于Recycle.exe病毒的分析
  • activeti user guide 中文_Cool Edit Pro 2.1 简体中文版
  • WinUSB - 微软为所有 USB 设备提供的常规驱动程序