【无标题】源码、反码、补码
一 . 源码、反码、补码
源码:整形的源码是4个字节,即32个比特位
源码的第一个数是符号位,0表示为正数,1是为负数
如:a = 10
00000000000000000000000000001010 - 源码
2^3 + 2^1 =10
00000000000000000000000000001010 - 反码
00000000000000000000000000001010 - 补码
正整数的源码、补码、反码是一样的
b = -10
10000000000000000000000000001010 - 源码
111111111111111111111111111111110101 - 反码 (符号位不变,其余位都与源码相反)
111111111111111111111111111111110110 - 补码 (符号位不变,反码+1)
补码->源码
1. 减1取反
111111111111111111111111111111110110 - 补码
111111111111111111111111111111110101 - 减1
10000000000000000000000000001010 - 源码(取反)
2. 取反加1
111111111111111111111111111111110110 - 补码
10000000000000000000000000001001 - 取反
10000000000000000000000000001010 - 源码(加1)
二 . 运算
#include <stdio.h>
int main()
{int a = 1;int b = -1;printf("%d\n",a+b);return 0;
}
计算机用补码计算
// 10000000000000000000000000000001 —— -1的源码
// 11111111111111111111111111111110 —— -1的反码
// 11111111111111111111111111111111 —— -1的补码
// 00000000000000000000000000000001 —— 1的补码
// 00000000000000000000000000000000 ->0(a+b)
源码的计算是错误的
// 10000000000000000000000000000001 —— -1的源码
// 00000000000000000000000000000001 —— 1的源码
// 10000000000000000000000000000010 -> -2
截断、整形提升:有符号数提升时,按符号位提升;无符号数提升时,前面全部补0
#include <stdio.h>
int main()
{char a = -1; //补码截断,取后8位
// 10000000000000000000000000000001 - -1源码
// 11111111111111111111111111111110 - -1反码
// 11111111111111111111111111111111 - -1补码
// 11111111 - asigned char b = -1;
// 11111111111111111111111111111111 - -1补码
// 11111111 - bunsigned char c = -1;
// 11111111111111111111111111111111 - -1补码
// 11111111 - cprintf("a=%d b=%d c=%d\n",a,b,c);
//要打印出整形,所以要整形提升
// a,b相同
// 11111111111111111111111111111111 - 补码(有符号数提升时,按符号位提升)
// 11111111111111111111111111111110 - 反码
// 10000000000000000000000000000001 - 源码//无符号数提升时,前面全部补0
// 11111111 - c
// 00000000000000000000000011111111 - 补码,也是源码return 0;
}
#include <stdio.h>
int main()
{int i = -20;
// 10000000000000000000000000010100 -源码
// 11111111111111111111111111101011 -反码
// 11111111111111111111111111101100 -补码 unsigned char j = 10;
// 00000000000000000000000000001010 -源码(补码)printf("%d\n",i+j); //-10// 11111111111111111111111111101100 -补码
// 00000000000000000000000000001010 -补码// 11111111111111111111111111110110 -补码
// 10000000000000000000000000001001 -反码
// 10000000000000000000000000001010 -源码return 0;
}
【无标题】源码、反码、补码相关推荐
- 二进制 正数 负数 源码反码补码
二进制的正负数 . HEX (十六进制) EA EA Oct(十进制) 有符号 无符号 -22 ...
- 源码 反码 补码详解(为什么计算机存储数值为补码形式?)
一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放 ...
- 源码/反码/补码 (转)
大家都知道数据在计算机中都是按字节来储存了,1个字节等于8位(1Byte=8bit),而计算机只能识别0和1这两个数,所以根据排列,1个字节能代表256种不同的信息,即28(0和1两种可能,8位排列) ...
- java数字取反_java中源码反码补码与取反的理解
数字在计算机里是按照二进制来表示的. 箭头朝哪边就是朝哪边移动 补码,反码,和源码 负数原码转化为补码:符号位不变,数值位按位取反,末尾加一. 负数补码转化为原码:符号位不变,数值位按位取反,末尾加1 ...
- 2.2.1 定点数的表示 原码 反码 补码 移码
没有未来的未来不是我想要的未来 o(╥﹏╥)o (つД`)(ノへ ̄.)哭了 学习的是定点数的表示,那我们首先来认识一下什么叫定点数与定点数相对应的另一个概念叫做浮点数所谓定点数就是指小数点的位置固定不 ...
- 补码原码转换c语言代码,c/c++原码反码补码原理 以及进制转换
1首先了解 低字节位 和高字节位 看图 2字节在内存的排列方式//int num = 010; //0开头代表 8禁止 //("%d",num); //所以打印的是8 int nu ...
- 二进制运算以及源码、补码、反码概念讲解
前言 在学习框架源码底层时,有非常多的二进制运算,由于大学学习计算机基础时开小差,没有学习牢固,所以在看底层源码的算法逻辑时遇到二进制运算比较吃力,遂通过一篇博文来总结下二进制运算,记录一下. 读者认 ...
- 原码反码补码以及左移右移无符号左移右移。
一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符 ...
- python二进制反码例题_python中的进制转换和原码,反码,补码
python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...
- day017:Java进制转换、原码反码补码、位运算、位移运算符
一.进制介绍: 1.进制:指进位制,表示某一位置上的数,运算时是逢X进一. 十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一. 2.Java中默认的数值都是十进制,如果要输入其他进制,在数值 ...
最新文章
- zabbix3.2自动发现批量监控redis端口状态
- windows tensorrt python
- 装机人员工具 - imsoft.cnblogs
- mysql5.5 datetime默认值不能为NOW或者CURRENT_TIMESTAMP
- leetcode 463. 岛屿的周长
- 与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉
- Leetcode--1160.拼写单词(Java)
- arcgis server 9.3 查看地图服务时出现No Content错误
- 机器学习知识点查漏补缺(朴素贝叶斯分类)
- C语言编程题目(精心准备,特别适合C语言小白)
- 【数理统计】数理统计的简单认识
- 国密算法c语言实现,求 国密sm2 算法 第四部分 公钥加密算法 c语言实现代码,该怎么解决...
- python写文件格式转换程序_有趣的python小程序——图片格式转换
- PHP、TP5生成下载word
- 手机APP测试注意点
- 云原生|容器和应用安全运营实践思考
- android 翻译功能开发,手把手教你开发Android studio翻译插件
- 绝对不变性原理、内模原理
- matlab如何下载对应版本的runtime
- 【转】JAVA中Cookie MaxAge属性及其使用
热门文章
- java recordset 记录数_ADO Recordset 对象
- SSM整合框架搭建(适合新手)
- ElasticSearch设置日志保存时间-自动删除
- Spring实现策略模式
- orcl数据库备份数据的命令
- 金属-5,10,15,20-四羧酸甲酯基苯基卟啉(M-TCPP-OMe)配合物卟啉铁Fe-TCPP-OMe/卟啉钴Co-TCPP-OMe/卟啉锰Mn-TCPP-OMe/卟啉铜Cu-TCPP-OMe定制
- c语言中的判断语句,C判断语句
- 目标检测作业及阶段总结
- 爬虫工具可以干什么_10个爬虫工程师必备的工具了解一哈
- linux命令大全 tar,linux tar命令详解