C语言学习笔记之原码反码补码
原码:就是我们自己看的,以及机器输出给我们看的
补码:机器永远是以补码的形式将数据保存在计算机中
正数:
原码=反码=补码
负数:
反码:原码的符号位不变,其他位取反 ,1变0 0变1
补码:机器存储数据的方式 等于 反码+1
例子:
96(默认int数据类型):
原码:00000000 00000000 00000000 01100000 共32位
补码:00000000 00000000 00000000 01100000
-96:
原码:10000000 00000000 00000000 01100000 共32位
反码:11111111 11111111 11111111 10011111
补码:11111111 11111111 11111111 10100000
举个例子会更容易对他们加深理解
(-26) ^ 38为多少(^是异或)
1.我们知道我们做运算时得把其数字变作补码
则先把(-26)和38都变为补码
-26:
原码:10000000 00000000 00000000 00011010
反码:11111111 11111111 11111111 11100101
补码:11111111 11111111 11111111 11100110
38:
原码:00000000 00000000 00000000 00100110
补码: 正数的补码=原码
00000000 00000000 00000000 00100110
2.我们得把两个数的补码进行异或运算(位相同为0,不同为1)
11111111 11111111 11111111 11100110
00000000 00000000 00000000 00100110
----------------------------------------------------------
补码: 11111111 11111111 11111111 11000000
3.计算机要让我们看到,得变回反码后变为原码
反码: 补码-1
11111111 11111111 11111111 10111111
原码: 10000000 00000000 00000000 01000000 = -64
最后我们算出(-26) ^ 38结果为-64
我们用电脑验证一下
耶,结果和算的一样
通过这个例子,把负数和正数的原码反码补码关系可以弄清楚,还顺带进行了异或的操作,希望大家能理解。
最新文章
- android studio 不能创建或者安装模拟器
- Android和iOS常用命令学习(真机)
- 安装数据库Mocrosoft.NET Application Security警告
- vue生命周期
- (转)清理AIX的/var文件系统大小
- Linux VFS中write系统调用实现原理【转】
- VS2010中“工具>;选项中的VC++目录编辑功能已被否决”解决方法
- hdwik中view模块的应用
- xlistview的(java)
- system函数
- C# 之 Stream 和 byte[] 的相关转换
- 【转】六年软件测试感悟-从博彦到VMware
- hadoop2.2编程:mapreduce编程之二次排序
- iOS学习之数据解析
- 【第一篇章-android平台buffer播放探索】native media
- ubuntu12.04 安装 opencv 2.4.8(非源代码编译)
- iOS 上传文件
- JavaBean,List,Map,json格式之间转化方式
- tableview 选中一行后,不显示选中颜色
- SVM参数解析
热门文章
- MYSQL 之 JDBC(九):增删改查(七)DAO的补充和重构
- 数据可视化之PowerQuery篇(二)这个方法帮你快速计算列
- Python之爬虫(十七) Scrapy框架中Spiders用法
- 前端06 /JavaScript之BOM、DOM
- bzoj3526[Poi2014]Card*
- 量子点/钙钛矿 LED的研究概述
- P5836 [USACO19DEC]Milk Visits S 从并查集到LCA(最近公共祖先) Tarjan算法 (初级)
- 牛客练习赛 66B题解
- Maven配置文件中的版本使用-SNAPSHOT
- PyQt5布局管理器