原码反码补码

    在对带符号数进行运算时,必然涉及数的符号问题,人们通常在一个数的前面用“+”表示正数,用“-”表示负数。而在数字系统中,符号和数值一样使用0和1来表示的,一般将数的最高位作为符号位,用0表示正,用1表示负,其格式为:

符号位

数值位

   把符号和数值一起编码表示的二进制数称为机器数或机器码,常用的机器码有原码,反码,补码三种。

一、原码

用原码表示带符号位二进制数时,符号位用0表示正,1表示负,数值位保持不变,原码表示法又称符号-数值表示法

整数原码和小数原码

    二进制整数原码就是在其最高位添加0或1,用于表示正负,小数也是一样。

例1:$X_1=+1101,X_2=-1101,$则$X_1$和$X_2$的原码为:$[X_1]_原=01101,[X_2]_原=11101$.

    根据定义:整数“0”的原码有两种形式,即00…0或10…0.

例2:$X_1=+0.1011,X_2=-0.1011$,则$X_1$和$X_2$的原码为:$[X_1]_原=0.1011,[X_2]_原=1.1011$

    根据定义:小数“0”的原码也有两种形式,即0.0…0或1.0…0.

二、反码

正数反码的数值位和真值相同;负数反码的数值位是真值按位取反

例1:$X_1=+0.1011,X_2=-0.1011$,则$X_1$和$X_2$的反码为:$[X_1]_反=0.1011,[X_2]_反=1.0100$

    根据定义:小数“0”的反码有两种表示形式,即0.0…0或1.0…0.

    根据定义:整数“0”的反码也有两种表示形式,即00…0或10…0.

三、补码

用补码表示带符号的二进制数时,符号位与原码、反码相同。正数补码的数值位与真值相同,负数补码的数值位为反码在最低为加1

例:$X_1=-0.1011,X_2=-1010$,则$X_1$和$X_2$的补码为:$[X_1]_补 = 1.0101,[X_2]_补 = 10110$

    根据定义:小数“0”的补码只有一种表示形式,即0.0…0.

    根据定义:整数“0”的补码也只有一种表示形式,即00…0.

    采用补码进行加、减运算时,其加、减运算均可通过加法是按,运算规则如下:

$[X_1+X_2]_补=[X_1]_补+[X_2]_补$

$[X_1-X_2]_补=[X_1]_补+[-X_2]_补$

    运算时,符号位和数值位一样参加运算,若符号位有进位产生,则应该将进位去掉才能得到正确结果。

例:若$X_1=-1001,X_2=+0011$,则采用补码求$X_1-X_2$的结果为:$[X_1-X_2]_补=[X_1]_补+[-X_2]_补=10111+11101=10100$,由于结果的符号位为1,表示是负数,故$X_1-X_2=-1100$

四、总结

(1)若$X>0$,则$[X]_原=[X]_反=[X]_补$.

(2)$[X+Y]_补 \xrightarrow[求反,最低位+1]{} X+Y$.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web编程技术分享

【Java框架型项目从入门到装逼】第十节 simple-jdbc源码

39810
来自专栏java达人

数字的陷阱

Java中对数字的处理,如四舍五入,如加减乘除,貌似是一个很基础很简单的知识点,但是如果你没有对他进行充分了解,很容易掉进它的陷阱里。 1、浮点数运算 先来看一...

1868
来自专栏海天一树

程序员必须掌握的8大排序算法

分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序)...

3108
来自专栏小樱的经验随笔

洛谷 P1598 垂直柱状图【字符串+模拟】

P1598 垂直柱状图 题目描述 写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过72个字符),然后用柱状图输出每个字符在输入文件中出现的次数...

3005
来自专栏noteless

[十六]基础类型BigInteger简介

final int[] mag;保存数字的数据 字节序为大端模式,大端模式就是低地址存储高位

1524
来自专栏Android原创

Android OpenGL ES滤镜开发设计

按照正常的Android OpenGL开发,一般只需引入两个“主角”:GLSurfaceView和Renderer。

2124
来自专栏IT笔记

脑补二进制与十进制的理解

首先了解几个概念: 1、字(Byte)节是长度单位。位(bit)也是长度单位。 2、基本数据类型 所占用空间大小:byte b; 1字节、short s; 2字...

4215
来自专栏从零开始学 Web 前端

unsigned/signed int/char类型表示的数值范围

我们知道,在计算机内部数值一律使用补码存储。正数的补码与原码一致,负数的补码是符号位为1,其余位是该负数的绝对值按位取反后加1得到。

802
来自专栏吴伟祥

位运算 原

举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空...

1102
来自专栏SeanCheney的专栏

《Pandas Cookbook》第01章 Pandas基础

公司网址,http://www.dunderdata.com(dunder是蒸馏朗姆酒的残留液体,取这个名字是类比数据分析过程) GitHub地址:https...

1292

扫码关注云+社区