原码、反码、补码转换和取反符号的运算规则
一、原码,反码,补码之间的转换
1. 正数
正数的原码、反码、补码相同。
以数字10为例:
10(在计算机中int类型是32位,为了简便这里以8位来进行运算)
原码=反码=补码:0000 1010
2.负数
以数字-5为例来说明:
-5 原:1000 0101
(注:第一位为符号位,符号位值等于1,表示负数,等于0表示正数)
反: 1111 1010
(反码等于原码除符号位外其他位按位取反,所以000 0101取反的结果为111 1010;再 加上符号的1,所以反码为1111 1010)
补:1111 1011
(补码=反码+1)
二、取反符号(~) 的运算
~是对全部的位进行取反,包括符号位。以例子来说明取反的计算过程。
例1:
以5取反的结果为6为例说明:
~5=-6
5 : 原码=反码=补码:0000 0101(这里为了方便用8位来进行计算)
(注:进行取反运算都是对补码进行取反运算的。所以首先要算出该数的补码再进行取反。)
取反的结果是: 1111 1010
(这里取反得到的这个是~5的补码,符号位为1,所以是个负数,我们将这个补码转换为原码 就可直观的计算出结果等于-6) 过程如下:
补码:1111 1010
反码:1111 1001(反码=补码-1)
原码:1000 0110(原码=反码除符号位外其他位按位取反)
即 1000 0110的值就等于 -6。
例2:
~(-10)=9
-10:补码:1111 0110
取反结果:0000 1001(还是一样这个得到的还是一个补码的形式,转换成原码就可以直观的得 到取反的结果值为 9。) 过程如下:
补码:0000 1001
反码:0000 1001
原码:0000 1001
0000 1001转化为十进制数就是 9.
(符号位为0,该值为一个正数,所以原反补相同)
————————————————————————————————————
这里解释一下为什么我说一个整数的二进制位转换成原码可以更直观的计算出它的十进制的值。(这个主要是针对负数而言的)
这里还是以8位来进行计算。
1010 1110 假设这个是一个补码,通过这个补码计算出它的十进制值如下:
(-1)*2^7+1*2^5+1*2^3+1*2^2+1*2^1=-80
转化为原码计算:
该原码为:1101 0000 计算出十进制的过程为:
-(2^6+2^4)=-80
小结:就是通过补码计算出十进制值的时候符号位的1也得计算,但是它是负的。
通过原码计算的时候,符号位为1将它看成一个负号就可以了。
(这个方法对于小一点的数来说可能计算起来比较方便吧)
原码、反码、补码转换和取反符号的运算规则相关推荐
- 原码反码补码以及左移右移无符号左移右移。
一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符 ...
- 原码 反码 换算工具 补码_原码和补码的换算(原码反码补码转换工具)
[-3]反=[10000011]反=11111100 原码 反码 负数的补码是将其原码除符号位之. 两个说法都没有错,我们举个例子来看看就明白了:1.10001的补码是取反后在再加1,也就是11110 ...
- 原码-反码-补码转换
计算机内部使用补码表示二进制数 1. 正数的补码=反码=原码 2. 负数由原码求补码 注意符号位始终保持不变. 若已知 负数 -8,则其:原码为:1000 1000,(1为符号位,为1代表负数,为0代 ...
- (转)java 原码反码补码计算 以及 取反运算,原码反码补码运算公式
[README] 转自: https://www.zhangshilong.cn/work/289454.html 1. 原码.反码.补码: (1)在Java中,所有数据的表示方式都是以补码形式来表示 ...
- 二进制数的原码反码补码转换
#include <iostream> #include <math.h> #include <string.h> using namespace std; voi ...
- Debug和release版本区别 原码反码补码的转换及存储
#define _CRT_SECURE_NO_WARNINGS 1 //Debug和release版本区别(VS2019版) //例子 #include<stdio.h> //int m ...
- python原码反码补码
python原码反码补码 1. 计算机计算的逻辑 2. 原码反码补码 2.1 正数: 2.2 负数 2.3 原码与补码之间的转换 2.3.1 原码->补码 2.3.1 补码->原码 2.3 ...
- python二进制反码例题_python中的进制转换和原码,反码,补码
python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...
- 数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)
目录 1.数制的转换 1)二,八,十六进制进制转十进制 加权系数求和法 2)十进制转二,八,十六进制 除基取余法(短除法) 减权定位法 3)二,八,十六进制的相互转换 2.BCD码 3.格雷码 4.原 ...
最新文章
- Python和JavaScript之间的JSON日期时间
- 利用curl并发来提高页面访问速度
- js 对象创建及其继承的方法
- Starling 2D框架简介
- 数据库 - 库表操作 - 存储引擎
- .NET学习知识和技术总结
- MyBlog前端开发2
- which 命令详解
- Vue单文件项目自定义组件入门
- Vancouver wechat
- AAAI'22 Oral | 复旦x字节等提出:基于无监督编辑的反事实故事改写
- varchar(10)与nvarchar(10)有什么区别
- miscrosoft visio 2003记
- 【MySQL】exists与in的比较
- php 轻量cms,【php源码】鱼跃CMS轻量CMS 版本号v1.4.6
- 关于sicp练习2.73的前置程序
- 语雀批量导出与图片下载
- Jeecgboot报错Failed to configure a DataSource: ‘unl‘ attribute is not specified and no embedded dataso
- excel python插件_再见 VBA!神器工具统一 Excel 和 Python
- 来自一个敲了5年代码的网络安全工程师的自述(目前薪资20K)