原反补移码的概念应用以及异或的作用
一、原反补移码概念
正数的原反补码是其本身。
原码:正数不变,负数,符号位 加上 真实值的绝对值,比如-1的绝对值01,那么原码为1000 0001
反码:正数不变,负数,在原码的基础上,符号位不变,其余各位取反。
补码:正数不变,负数,在原码的基础上,符号位不变,其余各位取反 再加1。
移码:和补码的符号位相反其他位相同,也就是对补码最高位取反。
以位长为8为例,正数以1为例,负数以-1为例来理解。
1的原反补码都是0000 0001
-1的原码:1000 0001
-1的反码:1111 1110
-1的补码:1111 1111
-1的移码:0111 1111
注:单片机、计算机中以补码的形式进行计算的。
二、补码的应用以及异或的作用
2.1补码的应用
计算机中,MCU中跑的都是补码,那么在程序代码处理负数时,直接对补码进行取反再加1,正好等于其真实绝对值。这个应用很是广泛。
if(x < 0)
{
B = (~x) +1;
}
B就得到了x的真实绝对值,这就方便了接下来对负数的一系列操作,比如运算什么的。
2.2异或的作用
在单片机中,假如其值长度为12bit,bit0-bit11,最高位bit11为符号位,那么其如果为负数,再假定其值是补码,那么如何处理呢?看下面:
if(x &0x800)
{
B = ((0xFFF)^x) +1;
}
没错,采用异或^运算,将bit0-bit11取反,异或的作用之一就是取反,在单片机中对于寄存器某位的反转可以采用异或的方式,另一个作用是保存组合信息用于交换。例如:
假定给出变量a与b,交换a和b的值,且要求不采用第3个变量,就a与b自身,如何实现?
如下:
a = a^b;/*a作为临时保存变量,保存a和b的所有信息*/
b = a^b;/*异或b将a中的b信息抵消只剩余a信息了,即将a的值赋给b,注意,此时b已经是a了*/
a = a^b;/* 此时b已经是a,异或b即将a中的a信息抵消只剩余b信息了,即将b的值赋给a */
到此就完成了,只用a与b自身不用第3个变量来实现a与b值的互相交换。
原反补移码的概念应用以及异或的作用相关推荐
- (实验一)十进制整数的原反补移码实现
文章目录 1. 实验要求 2. 相关知识点 0. 机器数 1. 原码 2. 反码 3. 补码 4. 移码 3. 实现思路 0. 准备 1. 转二进制 2. 实现原码 3. 实现反码 4. 实现补码 5 ...
- 二进制数的三种形式-----原反补
原反补的基本概念: 1.原码:一个十进制数字直接转化成的二进制序列 反码:将原码按位取反(无符号型) 补码:补码=反码+1 2.数据范围: 无符号数 (int 类型) 0~255 有符号数 (char ...
- 原码,反码,补码,移码的概念以及各自的用途和优点
1.原码 将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形式. 例如,假设用8位表示一个数,则+10的原码是00001010,-10的原码是10001010. 直接使 ...
- JAVA数据类型的转换及数据的原反补三码
一.自动类型转换/隐式转换 规律一:小的类型自动转化为大的类型 short s = 7; long l = s; long l = 500; // 500是一个整数,整数默认为int,int的范围比l ...
- Java基础教程-首篇前序-二进制符号位及原反补
上篇文章我们提到过在计算机中所有的文件底层的存储都是使用二进制的,右键点击一个文件然后点属性,我们可以看见该文件的大小,如:1.06 KB (1,094 字节) 这里我的文件大小为1094个字节,字节 ...
- C语言实现原反补相互转换
C语言实现原反补相互转换 1.原码.反码.补码 符号位:一个有符号定点数的最高位为符号位,0是正,1是负. 原码:最高位为符号位,其余各位为数值本身的绝对值. 反码:正数的反码与原码相同,负数的反码, ...
- C语言中位运算异或“∧”的作用
前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 1.概念 异或运算符"∧"也称XOR运算符.它的规则是 ...
- 常见位操作及运算应用举例:1,C语言中位运算符异或“∧”的作用2,异或运算的作用3,(与运算)、|(或运算)、^(异或运算)
1 C语言中位运算符异或"∧"的作用: 异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧0=0,0∧1=1,1∧1=0 ...
- 原码、反码、补码、移码的概念及转换
目录 前言 1.原码 2.反码 3.补码 4.移码 前言 学习完数的小数点表示,下一个需要解决的问题就是数的机器码表示问题. 在计算机中对数据进行运算操作时,符号位应该如何表示?是否也同数值位一道参加 ...
最新文章
- P2579,jzoj2288-[ZJOI2005]沼泽鳄鱼【矩阵乘法】
- Elastic Stack简介
- TorchSeg—基于PyTorch的快速模块化语义分割开源库
- [翻译] SoundManager 音频管理器
- CS48 D BIT
- Lc695-岛屿的最大面积
- websocket连接相关的几个问题
- 内存泄漏检查工具 Visual Leak Detector(VLD)
- android studio 创建项目失败原因Failed to create
- hmcl支持java7吗_求助。用HMCL下载1.7.10的问题
- 2018年——不平凡的一年
- LIM参数化景观施工图教程(1)- 工作环境和项目初始设置
- juniper防火墙定义策略生效时间
- 警惕Linux的传销投机属性,恢复建立契约商业化社会秩序。
- python怎么批量读取文件_python如何批量读取txt文件
- html背景视频如何自动播放,使用视频作为网页背景的技术探讨
- 火影忍者ol手游服务器注册上限怎么办,火影忍者ol手游进不去是怎么办 火影忍者ol手游上不去原因详解...
- android2.3.5中阿拉伯文字符显示顺序不是从右至左显示
- 如何通过供应链管理来居家做菜?
- windows和linux系统文件目录
热门文章
- KlayGE 4.4中渲染的改进(五):OpenGL 4.4和OpenGLES 3
- Spring的Annotation使用注意
- Spring AOP(面向切面编程)
- SuperMap_iClient3D_10.2.1_for_WebGL下载
- WriteFreely:创建博客,建立社区
- sh脚本和bash脚本_我是如何开始使用bash脚本的
- 使用Elizabeth为您的应用程序生成随机数据
- 前端:CSS/10/伪类选择器,CSS列表属性,CSS边框属性,CSS内边距属性,CSS背景属性
- 探讨 | 深入探讨Redis管道
- CSS 设置表格格式