精华内容
下载资源
问答
  • 依然是为了避开那些繁琐复杂晦涩的概念与术语,为了确保能清晰的梳理它们之间的关系,现分为两部分说明 1. 机器数 是 正数 符号位为0 原码 = 反码 = 补码 eg:机器码长度为8,求X(6)10原码 反码 补码 移码 [X]原...

    依然是为了避开那些繁琐复杂晦涩的概念与术语,为了确保能清晰的梳理它们之间的关系,现分为两部分说明

    1. 机器数 是 正数  符号位为0

    原码 = 反码 = 补码

    eg:机器码长度为8,求X(6)10原码 反码 补码 移码

    [X]原 = 00000000+110=00000110

    [X]补=[X]反=[X]原 =00000110

    [X]移=10000110

    (绿色为符号位)

    2.机器数 是 负数 符号位为1

    反码 = 原码(符号位除外)各位取反而得到

     补码 = 原码(除符号位外)各位取反,并在未位1而得到

    eg:机器码长度为8,求X(-6)10原码 反码 补码 移码

    [X]原 = 10000000+110=10000110

    [X]补=11111001 +1=11111010

    [X]反=11111001

    [X]移=01111010

    (绿色为符号位)

    =============================

    移码 = 补码的符号位直接取反

    =============================

    应用示例

    已知补码 求原码

    原码 = 补码取反加1 (符号位除外)

    [X]补=1101001  求[X]原。

    [X]原 = 1010110+1 =1010111

    总结:在换算过程中符号位始终保持不变(移码除外)。依然高端大气上档次!

     

    如果有错误敬请指出,反正我也不一定改!

    转载于:https://www.cnblogs.com/seer/p/3395888.html

    展开全文
  • 进制之间的快速转换法: 十进制和二进制的指尖的快速转换法: 8421码,是BCD码的一种 二进制数据中的每个位上的1,都代表一个固定的数值,将固定的数值相加即可! 二进制: 1 1 1 1 1 1 1 1 十进制: 128 64 32 16 8...

    进制之间的快速转换法:

    十进制和二进制的指尖的快速转换法:

    8421码,是BCD码的一种
    二进制数据中的每个位上的1,都代表一个固定的数值,将固定的数值相加即可!
    二进制: 1       1       1       1      1        1        1        1
    十进制: 128    64      32      16      8        4        2        1
    

    现在从二进制转十进制时,我们就直接对应的来加出来对应的数值就可以了
    当然从十进制转二进制时,我们就不用去除了,直接可以小于就写1大于就写0,就好了
    在这里插入图片描述

    x进制转y进制

    1)将x进制转为十进制
    2)十进制转为y进制
    

    二进制转八进制,十六进制

    在这里插入图片描述

    方法二:拆分组合法

    二进制转八进制
    0b1011001
    因为2的3次方是8,所以3个拆分,可能会不够,不够就在前面补0

    在这里插入图片描述
    二进制转十六进制
    0b1011001
    因为2的4次方是16,所以4个拆分,可能会不够,不够就在前面补0
    在这里插入图片描述

    原码反码补码之间的相互转换关系

    在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
    ●原码
    就是二进制定点表示法,即最高位为符号位, "0"表示正, "1"表示负,其余位表示数值的大小
    ●反码
    正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
    ●补码
    正数的补码与其原码相同;负数的补码是在其反码的末位加1。

    所以知道补码求反码就末位减1。
    知道反码求原码就对其原码逐位取反,但符号位除外。

    展开全文
  • 原码 反码 补码

    2015-08-14 01:33:03
    进过复习和思考,本人悟出了“8”图形原理概念,或许已经专家学者已经有过这方面说法,但是我才疏学浅,以前没听说过,那么我所提出“8”字图形原理和原码反码以及补码之间有什么关系呢,

    最近学习或者说是复习TCP/IP协议的时候, 看到一个算法关于二进制的原码 反码 和补码的概念问题, 这都是大一学计算机基础的时候学过这些, 其之间的转换很简单,但是可能大部分人都没想过 为什么要有反码和补码的转换,进过复习和思考,本人悟出了“8”图形原理的概念,或许已经专家学者已经有过这方面的说法,但是我才疏学浅,以前没听说过,那么我所提出的“8”字图形原理和原码和反码以及补码之间有什么关系呢,下面就来说说我的看法:

             首先,原码大家都知道,下面以8bit的二进制来举例 比如:0000 0001 这代表的是正数1, 1000 0001 这代表的是-1,在8bit的范围内, 其值的范围是-128~127 也就是0000 0000和1111 1111之间。

             -128-1=0127+1=-128,其中-128就是-0的概念。如果有不了解“模”的概念的可以先上网看一下模的概念,上面的计算也就看懂了。那么就是说 如果一个负数到了负数的最大范围,则再减一位,也就是加-1则变成0,并往正数的方向走; 如果两个正数相加, 达到了正数的最大范围,则超过的数值则变成负数。 可能文字表达看的有点晕,我以例子说明:

             比如:在8bit字中, 5+127=? 答案是-4 详细步骤:

    1.      5在计算机中表示为:0000 0101 ; 127在计算机中表示: 0111 1111;那么两个二进制相加后 变为: 1000 0100=-4;

    应该很好理解吧, 那么我换一下 10 -5=? 按算术运算都知道 是5;那么在计算机中计算是否是10的二进制值呢?

    10的二进制:0000 1010; -5的二进制:1000 0101;二进制相加后 变为:1000 1111 其值为-15;

    这是咋回事呢?

    下面就来说说我的“8”字图形论。我讲正数的范围表示成“8”字图形的上半圈。 负数的范围表示成“8”字图形的下半圈。交集处为-128和0,则上边圈的范围是1~127, 下半圈的范围是-127~-1;

    下面开始画“8”字图 记住顺序或方向, 从中间交集处开始 顺时针画下半圈,然后再从中间逆时针画上半圈, 那么“8”字的流程就出来了, 那么有人会问, 这是干什么神经事,别急,往下听。

     

    再一次强调图形的画的方向和流程。上面也提到过, 超过负数的最大值后 超过的部分为0或正数, 超过正数的最大范围的部分为-0(-128)或负数。那么从图形上看,一个正数和一个负数相加, 就好比“8”字上半圈里注入水,水代表正数的值, 水从正数方向往负数方向流, “8”字下半圈里是实心的,但是从最大负数往回掏出一部分的空心部分, 也就是加的负数的值, 当下半圈流的时候就是相减的过程, 那么如果下半圈空心部分注满了水,并且还多出一部分水在上半圈, 那么多出来的就是结果值, 如果下半圈没被注满, 则下半圈空出来的部分就是结果值为负数。

    以上就是图形论的原理。不知有没有人能看的懂。

     

    那下面就来验证图形论。

    其实,这就是反码出现的原因, 比如上线10+(-5)的例子, 按照正常的算术就是拿10减去5, 但计算机里没有减法,只有符号位为1的负数表达方式,那怎么进行减法呢? 聪明的会联想到上面说过的 ,如果超出正数的最大范围,或超出负数的最大范围 那么就会得出相反的结果。原因是数值位向符号位进位,是的符号位的值变化了。

    那这样就好办了啊, 我们还是从图形论上说起,然后再说计算机里的实现方式。

    要减去5 也就是将代表值为10的水 流入代表值为5的空心部分, 但是如果我是从负数的起点也就是最小的部分开始掏空, 那么水就留不下来,那只能从负数的最大处开始掏空,以便和正数部分有水的一端相接,这样水就留下来啦。

    其实是什么意思呢:

    从空间概念上讲,数值是一段一段的 没有顺序的,只要能相抵消就行,也就是图形论中所述的;

    从计算机算法上来讲,就是如果减去一个数,或加上一个负数, 那么就用这个负数的对等的一个数来代替(需了解“模”的概念);比如在-128~-0之间,-1和-126是对等的, -2和-125是对等的,-127的二进制为:1111 1111; -1的二进制位:1000 0001; 在计算机中-127就是-1的反码,反过来也一样。那么如果减去1 就相当于 减去-127一样,比如10-5=? 在算术中等于5.但在计算机算法中则相当于 -122-10; 10的二进制:0000 1010; -122的二进制:1111 1010;两二进制相加的:0000 0100;其十进制为:4;可结果也不对啊 不是5啊?这是为什么呢?

                       这就是补码为什么出现了?

                       结果为什么会相差1. 其原因就是计算机中0有正负之分, 在数值上减去0和加上          0对结果没影响, 但是从空间上来看,-0也是一段空间。这就是为什么计算机里用-128来代替-0的意思了。即-128+1转换成二进制运算则为: 1111 1111 + 0000 0001 结果为:0000 0000 也就是十进制的0;既然-0加上A 结果应该为A.可在计算机中却减少了1.
    因此,补码为原码的反码+1而得来。到此不知有多少人能看明白的。呵呵,反正我自己理解了。

            

    再谈谈反码的“反”的意思:如果按照时钟指针的走法,顺时针为正, 那么逆时针就违反,所以,在“8”字图形论中, 也一样, -1是-128-127+ 1 而得来的, -127+1=-126,-128-127则结果为127, 127+1 溢出则结果为-1带思考!

     

     

    总结:

             计算机中,加上一个负数,就相当于加上这个负数的补码,如果这个负数的绝对值小于正数, 那么这个负数的补码肯定是个很小的负数,和正数二进制相加 这会溢出,则符号位会改变。 如果负数的绝对值大于正数, 那么这个负数的补码肯定是个很大的负数, 那么和正数相加, 不会产生溢出, 符号位也就不变。
    展开全文
  • * 演示的是位运算,要把数值换算成二进制再进行运算,注意原码 反码 补码之间的换算关系。 * 正数的的原码=反码=补码 * 负数的补码=原码取反+1; */ public class TestMove { public static void main(String[]...
    package day01;
    /*
     * 演示的是位运算,要把数值换算成二进制再进行运算,注意原码 反码 补码之间的换算关系。
     * 正数的的原码=反码=补码
     * 负数的补码=原码取反+1;
     */
    public class TestMove {
    	public static void main(String[] args) {
    		int a = -5;
    		System.out.println(a>>1); //带符号右移,高位补符号位,也就是正数时补0,负数时补1
    		System.out.println(a<<1); //左移,低位补0
    		System.out.println(a>>>1); //不带符号右移,高位补0
    		System.out.println(5&7);//位与运算
    		System.out.println(5|7);//位或运算
    		System.out.println(5^7);//位异或运算
    		
    		//三元运算符由?:组成,运算时,先判断?前面的表达式是真还是假,如果是真,就去:前面的值,否则取:后面的值
    		int x = a>10?100:200;
    		
    		
    	}
    }
    

     

    展开全文
  • 原码反码补码知识整理在计算机中机器是识别不了正数(+)、负数(-),所以早期给计算机设定了0代表正数,-1代表负数,称为符号位,置于最前面1.原码正数转换为二进制位,二进制位就是这个正数的原码负数取绝对值...
  • 先说说原码补码反码之间的关系 就拿-1和1来说 原码 1=0000 0001 -1=1000 0001 反码 1=0000 0001(原码)=00000001 -1=1000 0001(原码)=11111110 补码 1=0000 0001(原码)=00000001(反码)=00000001...
  • 原码反码补码之间的关系 原码反码、补码 计算机中的有符号数有三种表示方法,即原码反码和补码。 三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位三种表示方法各...
  • 计算机中原码反码补码之间的关系 最近在刷C和指针的题目,刷到一题需要补码的知识,在自己脑子里面一搜罗,发现概念已经有些模糊了。刚好播客的申请通过了,就来试试水吧! 我们平时一起共事小伙伴总喜欢开一...
  • 最直观的原码/反码/补码图解
  • 原码反码补码之间关系

    千次阅读 2017-06-05 11:20:08
    原码反码补码之间关系     1、ASCII码 用来表示相关字符编码方式,ASCII码是世界标准。   2、BCD码 Binary-coded Decimal缩写BCD,二进制编码-十进制数,表示用4位二进制数表示数字0-...
  • 原码反码补码之间的相互关系 1、10001的补码是取反后在再加1,也就是11110+1=11111; 2、如果是11111变回原码呢?我们可以采取逆过程先减1,11111-1=11110,再取反变为10001; 3、如果要是在补码变原码时先去反...
  • 数值在计算机中是以补码的方式存储,在探求为何计算机要使用补码之前, 让我们先了解原码反码补码的概念。  对于一个数, 计算机要使用一定编码方式进行存储。 原码反码补码是计算机存储一个具体...
  • 计算机操作补码。 对于八位数二进制,第八位为...原码 = 反码 = 补码 对于负数 反码:除了符号位之外,其他位取反(0变1,1变0) 补码:在反码的基础之上+1(此处可能有溢出,还未研究。欢迎留言区留言~~) ...
  • 二进制减法类似于十进制减法,我们从十进制减法来推出二进制减法如何进行运算。 二进制计算 例如101001-011010=001111(41-26=15)运算。 灰色部分为计算过程,绿色字为被减一得到数,红色字为借一后得到...
  • 原码反码补码相互之间的关系

    千次阅读 2019-03-09 12:42:44
    原码反码补码知识整理 在计算机中机器是识别不了正数(+)、负数(-),所以早期给计算机设定了0代表正数,-1代表负数,称为符号位,置于最前面 1.原码 正数转换为二进制位,二进制位就是这个正数的原码 负数取...
  • 1 机器数和真值1.1 机器数一个数在计算机中二进制表示形式, 叫做这个数机器数。机器数是带符号,在计算机用一个数最高位存放符号, 正数为0, 负数为1....计算机中数字是以二进制补码的方式存储。1.2 真值...
  • 原码补码之间关系

    2012-11-07 22:23:38
    最低位1不变,最低位1之前0也不便,其他都取反 而且-128没有原码反码表示,但是其补码为10000000,所以补码能够比原码反码多表示一个数
  • 这里专门用来当自己一个小小笔记吧~ 为了方便记忆,这里只用用实例来说明吧: 正数: 1)X = +1011 ...正数:原码反码补码相同。 负数:反码符号位与原码相同,其他位取反; 补码:反码+1;...
  • 关于原码反码补码和移码定义如下 1:原码:      2:补码      3:反码      4:移码     上述公式很复杂,因此,可以总结出一些常见规律: 原码 如果机器字长为n,那么一个数的原码就是用一...
  • 目录【精炼总结】原码|反码|补码、有...这里不叙述由来和原理,而是直接总结 原、反、补码的转化方法 和 有无符号数之间的异同。 1. 原码反码补码 转化方法 1.0 前言 "有符号数"才有原码反码补码!!!
  • 计算机底层是用补码存储数据 ...计算机呈现给我们都是补码,如果想知道它十进制值需要先减1得到反码反码再除去符号位之外位分别取反得到原码原码除去符号位取反得到反码反码再加一得到补码 ...
  • 原码反码补码

    2016-11-22 20:02:27
    原码反码补码之间的关系及其运算

空空如也

空空如也

1 2 3 4 5 6
收藏数 118
精华内容 47
关键字:

原码反码补码之间的关系