新浦京81707con > 首页 > 澳门新萄京赌场网址原码反码补码与位运算

原标题:澳门新萄京赌场网址原码反码补码与位运算

浏览次数:196 时间:2020-05-05

一.原码反码补码基本概念

1.数量在微电脑内部是以补码的款式积存的

2.数码分为有号子数和无符号数

无符号数都为正数,由十进制直接转换来二进制直接存款和储蓄(其实也是该十进制的补码卡塔尔就能够。 有符号数用在计算机内部是以补码的款型积攒的。( 正数的最高位是标志位0,负数的最高位是 符号位1。 对王斌数:反码==补码==原码。 对于负数:反码==除符号位以外的各位取反。补码=反 码 1卡塔尔(قطر‎

正数的第二位地点为0,其源码是由十进制数调换来的二进制数字

负数的第一位地点为1,其源码后边的位也为10进制数转变过去的二进制数字,都以用补码格局表示 有暗号数的。

3.在力求为什么机器要采取补码在此以前, 让我们先领悟原码, 反码和补码的概念.对于一个数, Computer要 使用一定的编码方式实行存款和储蓄. 原码, 反码, 补码是机器存款和储蓄二个实际数字的编码格局. 原码, 反码, 补码是计算机原理的术语。说白了就是为着驾驭计算机2进制用的。对于C/C 来说,是和数据类型有关的。

4.原码

原码正是符号位加上真值的相对化值, 即用第一人代表符号, 其他位表示值

原码:[ 1]0000 0001

原码:[-1]1000 0001 **

5.反码

正数的反码是其自个儿

负数的反码是在其原码的底工上, 符号位不变,其他依次位取反.

原码:[ 1]0000 0001 反码:0000 0001

原码:[-1]1000 0001 反码:1111 1110

6.补码

正数的补码就是其本人

负数的补码是在其原码的根基上, 符号位不改变, 别的各位取反, 最后 1. (即在反码的底子上 1卡塔尔

原码:[ 1]0000 0001 反码:0000 0001 补码:0000 0001

原码:[-1]1000 0001 反码:1111 1110 补码:1111 1111

7.-1在内存中存放细节

在64为计算机中,-1的原码、反码、补码如下

-1原码 1000 0000 0000 0000 0000 0000 0000 0001

-1反码 1111 1111 1111 1111 1111 1111 1111 1110

-1补码 1111 1111 1111 1111 1111 1111 1111 1111

正整数取反 1正是对应负数

    固然能查到各样文献,亲自归结出团结的系统如故更能加强对该文化的知情。

二.为啥要引进反码和补码?

现行反革命我们领会了计算机可以有三种编码方式表示二个数. 对黄浩然数因为三种编码形式的结果都相近, 所以无需过多解释

原码:[ 1]0000 0001

反码:[ 1]0000 0001

补码:[ 1]0000 0001

不过对于负数, 可以知道原码, 反码和补码是一心两样的. 既然原码才是被人脑直接识别并用于计算表示方法, 为啥 还可能有反码和补码呢?

原码:[-1]1000 0001

反码:[-1]1111 1110

补码:[-1]1111 1111

首先, 因为人脑能够驾驭第一人是符号位, 在计算的时候我们会依靠符号位, 采取对真值区域的 加减. 不过对于计算机, 加减乘数已然是最根底的演算, 要设计的 尽量简单. Computer识别"符号位"分明会让Computer的功底电路设计变得十一分复杂! 于是大家想出了 将符号位也插手运算的方法. 大家明白, 依照运算法规减去二个正数等于加上二个负数, 即: 1-1 = 1 = 0 , 所以机器能够独有加法而并未有减法, 这样计算机运算的规划就更轻便了.

    本篇作品正是在重新组合百度周全有关原码、反码、补码和位运算的介绍并深度借鉴了张子秋和Liquor相关文章后收拾而出。

三.补码的再浓重

总计十进制的表达式: 1-1=0

1 - 1 = 1 = [00000001]原 [10000001]原 = [10000010]原 = -2

假设用原码表示, 让符号位也涉足计算, 鲜明对于减法来讲, 结果是不正确的.这也就是为何计算 机内部不应用原码表示三个数.

为了解决原码做减法的难题, 现身了反码:

1 - 1 = 1 = [0000 0001]原 [1000 0001]原

= [0000 0001]反 [1111 1110]反

= [1111 1111]反

= [1000 0000]原 (1111 1111,符号位不改变,别的为逐位取反卡塔尔

= -0

开采用反码总括减法, 结果的真值部分是科学的. 而唯一的难点莫过于就出将来"0"那个非常的数值 上. 即使大家精通上 0和-0是均等的, 然而0带符号是绝非别的意义的. 何况会有[0000 0000]原和 [1000 0000]原四个编码表示0.

于是乎补码的面世, 解决了0的标识以至七个编码的主题材料:

1-1 = 1 = [0000 0001]原 [1000 0001]原

= [0000 0001]补 [1111 1111]补

= [0000 0000]补

= [0000 0000]原

*这样0用[0000 0000]表示, 而从前现身难题的-0则不真实了.何况能够用[1000 0000]表示-128: = [1000 0001]原 [1111 1111]原 = [1111 1111]补

  • [1000 0001]补 = [1000 0000]补*

-1-127的结果应当是-128, 在用补码运算的结果中, [1000 0000]补 正是-128. 不过注意因为其实 上是应用早前的-0的补码来代表-128, 所以-128并不曾原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 那是不得法的卡塔尔

单字节的代表的最大的负数是多少? ``` [10000000]补 =[10000000]反 1 =11111111 1 =00000000 =00000000(最高位溢出了,符号位形成了0卡塔尔国

有人会问 10000000那一个补码表示的哪个数的补码呢? 其实那是三个明确,那几个数表示的是-128 所以n位补码能代表的限量是 -2^到2^-1 比n位原码能表示的数多一个

- 所以得出整型数的数值范围:

int number1 = 0b10000000000000000000000000000000;

int number2 = 0b01111111111111111111111111111111;

int number3 = 0b11111111111111111111111111111111;

printf("number1 = %dn", number1);

printf("number2 = %dn", number2);

printf("number3 = %dn", number3);

出口结果: number1 = -2147483648 number2 = 2147483647 number3 = -1

 

目录:

    一、机器数和真值

    二、原码,反码和补码的根底概念

    三、为何要选用原码,反码和补码

    四、原码,补码,反码再深远

    五、数据溢出测验**

    、位运算的演算表明

    七、位运算的粗略利用 

 

 

一、机器数和真值

 

    机器数(computer number)是数字在Computer中的二进制表示方式

    机器数有2性情状:一是符号数字化,二是其数的尺寸受机器字长的约束

    比如:十进制中的 6,Computer字长为8位,调换到二进制正是00000110,假如是-6,正是10000110

    这里的00000110和10000110就是机器数

 

    因为第壹人是符号位(正数该位为0,负数该位为1,0分 0和-0),所以:

        ①8位二进制数的取值范围便是:[1111 1111 , 0111 1111]

        ②机器数的方式值就不对等真正的数值。

            为分化起见,将带符号位的机器数对应的实在数值称为机器数的真值。

            比如:0000 0001的真值 =  000 0001 =  1,1000 0001的真值 = –000 0001 = –1

 

 

二、原码,反码和补码的根底概念

 

    对于三个数, Computer要利用一定的编码形式举行仓库储存。原码, 反码, 补码是机械存款和储蓄一个具体数字的编码情势

        [ 1] = [00000001]原 = [00000001]反 = [00000001]补

        [-1] = [10000001]原 = [11111110]反 = [11111111]补

 

    1.原码

        原码正是标识位加上真值的相对值, 即用第一人表示符号, 其他位表示值

    2.反码

        正数的反码是其本人

        负数的反码是在其原码的底工上, 符号位不变,别的依次位取反

    3.补码        

        正数的补码便是其自己

        负数的补码正是在反码的根基上 1

 

    简单来讲,正数的原码反码补码都以自身,负数的反码,补码都没有办法儿直观望出其数值,需求调换来原码再总计其数值

 

 

三、为啥要利用原码,反码和补码

 

    对于计算机,加减乘数已是最底子的演算, 要设计的尽量轻松,而让计算机识别"符号位"鲜明会让Computer的功底电路设计变得十一分复杂。于是大伙儿带头探讨将符号伪出席运算,何况只保留加法的秘籍

 

    若用原码总计十进制减法:1-1=0,结果是不科学的:

        1 - 1 = 1   (-1) = [00000001]原   [10000001]原 = [10000010]原 = -2

    使用反码时,结果的真值部分科学:

        1 - 1 = 1   (-1) = [0000 0001]原   [1000 0001]原= [0000 0001]反   [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

    而反码的难题在于0上,反码中会有[0000 0000]原= 0和[1000 0000]原=-0八个编码表示0,于是应时而生了消除这一主题素材的补码[1000 0000]补(8位二进制机器数中,补码还可以够多表示贰个低于数-128=[1000 0000]补):

        1-1 = 1   (-1) = [0000 0001]原   [1000 0001]原 = [0000 0001]补   [1111 1111]补 = [0000 0000]补=[0000 0000]原

 

 

四、原码,补码,反码再深远

 

    再一次推荐张子秋有关原码反码补码的博客,里面还讲了同余的定义与负数取模,自个儿也就不摘抄了。。

    x mod y等于 x 减去 y 乘上 x与y的商的下界

    三个数的反码, 实际上是其一数对于三个膜的同余数,而那么些膜实际不是大家的二进制, 而是所能表示的最大值

本文由新浦京81707con发布于首页,转载请注明出处:澳门新萄京赌场网址原码反码补码与位运算

关键词: 新浦京81707con 进制

上一篇:include包含文件查找的顺序,include包含头文件的语

下一篇:没有了