精华内容
下载资源
问答
  • 原码补码反码

    2020-01-18 14:44:24
    原码(用户的角度):原始的二进制 1、用户的数字分为正负数,符号位的存储 2、最高位为符号位:0代表为正数,1代表为负数 3、1000 0000 左边是高位, 右边是低位 1,+1: 0000 0001 -1: 1000 0001 +0: ...

    1)存储1字节(8位)大小的数字(char)

    原码(用户的角度):原始的二进制
    	1、用户的数字分为正负数,符号位的存储
    	2、最高位为符号位:0代表为正数,1代表为负数
    	31000 0000 左边是高位, 右边是低位
    	
    	1+10000 0001
    	   -11000 0001
    	   +00000 0000
    	   -01000 0000
    	   
    	原码存储导致2个问题:
    		10有两种存储方式
    		2、正数和负数相加,结果不正确(计算机只会加不会减)
    		
    		以原码来算
    			1-1 = 1 + -1
    			 10000 0001
    			-11000 0001
    				 1000 0010 = -2
    
    反码(为了算补码):
    	1、正数的原码和补码一样
    	2、求原码
    	3、(负数)在原码的基础上,符号位不变,其它位取反(01101+10000 0001
    	   -11111 1110
    	   +00000 0000
    	   -01111 1111
    	   
    	反码存储导致1个问题:
    	10有两种存储方式
    	
    	以反码来算:
    		1-1 = 1 + -1
    		 10000 0001
    		-11111 1110
    			 1111 1111 = -0
    
    计算机存储数字以补码方式存储(为了解决负数的储存)
    
    补码:
    	1、正数的原码、反码、补码都一样
    	2、补码为其反码+1
    	3、补码符号位不动,其它位求反,最后整个数+1,得到原码
    	
    	1+10000 0001
    	   -11111 1111
    	   +00000 0000
    	   -010000 0000 (最高位丢弃)= 0000 0000
    	
    	以补码来算:
    		1-1 = 1 + -1
    		 10000 0001
    		-11111 1111
    			10000 0000(最高位丢弃) = 0000 0000
    
    10进制数,站在用户的角度,原码
    二进制、八进制、十六进制数,站在计算机角度,补码
    
    在计算机系统中,数值一律用补码来存储,主要原因:
    	1.统一了0的编码
    	2.将符号位和其他位统一处理
    	3.将减法运算转变为加法运算
    	4.两个用补码表示的数相加,如果最高位(符号位)有进位,则进位被舍弃
    
    原码求补码:
    1)最高位符号位,其它位就是二进制(原码)
    2)在1)基础上,符号位不变,其它位取反
    3)补码在2)基础上加1
    
    补码求原码:
    1)补码
    2)求补码的反码,符号位不变,其它位取反
    3)原码在2)基础上加1
    
    
    
    例:
    	//一个字节
    	1000 0001
    	0x81
    	
    	//二进制、八进制、十六进制数,站在计算机角度,补码
    	//0x81转化为二进制1000 0001,最高位为1,说明是负数
    	char a = ox81;
    	补码:1000 0001
    	反码:1111 1110
    	原码:1111 1111 = -127
    
    	//10进制数,站在用户的角度,原码
    	printf("%d\n", a); // -127
    	
    	
    	//10进制数,站在用户的角度,原码
    	int a = -123;
    	原码:1000 0000 0000 0000 0000 0000 0111 1011
    	反码:1111 1111 1111 1111 1111 1111 1000 0100
    	补码:1111 1111 1111 1111 1111 1111 1000 0101
    	  %x: f	f	 f    f    f    f    8    5
    	
    	//%x, 默认以4个字节(32bit)大小打印
    	//二进制、八进制、十六进制数,站在计算机角度,补码
    	printf("%x\n", a); // ffffff85
    	
    	
    数据类型范围(站在10进制角度,原码)
    char 1个字节(8位)
    有符号范围:
    	正数:
    		0000 0000 ~ 0111 1111
    				0 ~ 127
    	负数:
    		1000 0000 ~ 1111 1111
    			   -0 ~ -127
    		-0 当做 -128 使用
    		-128:
    			原码: 1 1000 0000
    			反码: 1 0111 1111
    			补码: 1 1000 0000
    		-128 ~ 127
    		
    无符号:
    	  0000 0000 ~ 1111 1111
    			  0 ~ 255
    
    char:
    有符号:-128 ~ 127
    无符号:   0 ~ 255
    
    赋值或则越算,记得不要越界:
    							char ch = 127 + 2;
    							/*
    							129:
    								补码:1000 0001
    								反码:1111 1110
    								原码:1111 1111
    							*/4[	
    							printf("%d\n", ch); // -127
    							
    							
    							unsigned char b = 255 + 2;
    							
    							//257转化为二进制 0001 0000 0001 (只取8位)0000 0001 --> 1
    							
    							printf("%u\n", b); // 1
    
    展开全文
  • 主要为大家详细介绍了java原码补码反码的关系,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 原码反码补码、移码的作用?  在计算机内,机器数有无符号和带符号数之分。无符号数表示正数,在机器数中没有符号位。位于无符号数,若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点的位置...
  • java 原码 补码 反码

    2019-08-01 13:25:46
    1 原码 就是该数字不进行其他操作时数字最原始的二进制表示,在Java中我们有熟悉的byte,short,int,long的整数型基本数据类型以及float,double的浮点型基本数据类型。 在Java中,对于整数而言,其原码格式为最高位为...

    1 原码
    就是该数字不进行其他操作时数字最原始的二进制表示,在Java中我们有熟悉的byte,short,int,long的整数型基本数据类型以及float,double的浮点型基本数据类型。
    在Java中,对于整数而言,其原码格式为最高位为符号位,该位上1表示负数而0表示正数,剩余位数为该数字的二进制表示。在这里我们简单用int型的整数5及-5看下例子:
    5的原码:00000000 00000000 00000000 00000101
    -5的原码:10000000 00000000 00000000 00000101
    因此,对于原码来说,绝对值相等的正数和负数只有符号位不同。
    所以,简单的来说,原码就是整数在不进行操作时,以二进制形式存在显示
    反码
    对于正数来说,它的反码就是它的原码 ,原码等于反码:比如
    5的原码:00000000 00000000 00000000 00000101
    5的反码:00000000 00000000 00000000 00000101

    对于负数来说,简单的理解,就是将正数的原码第一个字符0变化为1,就成了这个正数的负数原码,然后将这个负数的原码除了第一字符外,剩下的其他字符位全部变化为和原码相反的1
    例如:
    5的原码:00000000 00000000 00000000 00000101
    -5的原码:10000000 00000000 00000000 00000101
    -5的反码:11111111 11111111 11111111 11111010
    补码
    对于正数来说,正数的补码就是它的原码

    对于负数来说,负数的补码就是在这个负数的反码基础上加1
    例如:
    -5的反码:11111111 11111111 11111111 11111010
    -5的补码:11111111 11111111 11111111 11111011

    正数原码,反码,补码之间的转化:
    2的原码:00000000 00000000 00000000 00000010
    2的反码:00000000 00000000 00000000 00000010 —原码等于反码
    2的补码:00000000 00000000 00000000 0000001 —反码加1就是补码
    负数的原码,反码,补码之间的转化
    -2的原码:10000000 00000000 00000000 00000010
    -2的反码:111111111 111111111 111111111 111111101
    -2的补码:111111111 111111111 111111111 111111110

    展开全文
  • 1.正数的原码=反码=补码 2.负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位+1 3. 0 在计算机种分+0与-0,...

    结论:

    1.正数的原码=反码=补码
    2.负数的反码=在其原码的基础上, 符号位不变,其余各个位取反
    负数的补码=在反码的基础上+1
    负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位+1

    3. 0 在计算机种分+0与-0,它们的原码,补码,反码如下:

    1、[+0]原码=0000 0000,   [-0]原码=1000 0000;
    2、[+0]反码=0000 0000,   [-0]反码=1111 1111;
    3、[+0]补码=0000 0000,   [-0]补码=0000 0000。
    

    在这里你会发现,+0和-0的补码是一样的,即0的补码只有一种表示。

    1. 原码

    原码就是符号位加上真值的绝对值,
    即用第一位表示符号, 其余位表示值.
    比如如果是8位二进制:

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

    第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

    [1111 1111 , 0111 1111]==>[-127 , 127]

    2. 反码

    反码的表示方法是:
    正数的反码是其本身
    负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

    [+1] = [00000001]原 = [00000001]反
    [-1] = [10000001]原 = [11111110]反
    

    3. 补码

    补码的表示方法是:

    正数的补码就是其本身
    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

    [+1] = [00000001]原 = [00000001]反 = [00000001]补
    [-1] = [10000001]原 = [11111110]反 = [11111111]补
    
    展开全文
  • 真值 原码 补码 反码 移码

    千次阅读 2018-11-23 16:24:36
    真值 原码 补码 反码 移码 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码<原码 补码 反码 移码 >"   原码   ...

     

    真值 原码 补码 反码 移码

    • 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码<原码 补码 反码 移码 >"

     

    • 原码

     

    • 反码

    • 负数的反码是将其原码除符号位之外的各位求反

     

    • 补码

    • 负数的补码是将其原码除符号位之外的各位求反之后在末位再加1<反码加1>

    • 移码 略显尴尬没看懂

                

     

    • BCD码

              简单的说BCD码就是用二进制表示十进制的一种编码方式,常见的BCD码有8421码 2421码 5211码 余3码 格雷码

    •     8421码  <一个栗子 : 5421 的8421码表示形式就是 0101 0100 0010 0001>   

            

    ------------------------------------------------------------------------------------------------------------------------------------------------------

     

           字符数据在计算机中的表示方法

     

    • 字符的编码 ASCII码(American Standard Code for Information Interchange) 美国标准信息交换码

              

    上图可知 : 

                    栗子 : NUL 为 0(符号位)000 0000B , SP 为 0(符号位)010 0000 

                    ASCII码的符号位都为 0 

     

     

    展开全文
  • 二进制数-0111的8位补码是________。 11111001 试题4 二进制数-0111的8位移码是________。 01111001 试题5 二进制数-0011的8位原码是________。 10000011 试题6 二进制数-0011的8位反码是________。 ...
  • 原码补码反码范围对比图

    千次阅读 2018-08-26 18:03:12
  • 介绍原码补码反码,按位运算等基础知识和简单例子
  • 原码 补码 反码

    2018-07-27 18:14:23
     反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。  如单字节的5的反码为:0000 0101;-5的反码为1111 1010。  补码:正数的补码就是其原码;负数的反码+1就是补码。...
  • 记忆和转换原码反码补码和移码其实很简单,方便的认识四种码。
  • 定点数机器码转换器。十进制输入示例:12345、0.12345、-12345、-0.12345;二进制输入示例:10101、0.10101、-10101、-0.10101,将定点数转换成机器码
  • 原码补码反码操作 概念 在计算机内,有符号数有3种表示法:原码、反码和补码,所有数据的运算都是采用补码进行的。 原码 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位...
  • 反码原码的基础上:符号位不变,其他位取反补码反码的基础上符号位不变,和1做加法说明: 原码 一般是机器码(同样的原码,在有符号和无符号时表示的10进制数不一样) 原:00101011 反码:01010100 补码:0 ...
  • 原码 补码 反码前言一、有符号数1.1原码 补码 反码总结 前言 在计算机中一般使用二进制表示各个有理数。在计算机中参与运算的数有两大类:有符号数和无符号数。无符号数就是没有符号的数,在寄存器中每一位均可用来...
  • 链接:... 总结一下求补码的方法: 一、整数: (1)正数(符号位为0):原码反码补码均一致 (2)负数(符号位为1):原码:二进制表示 反码:符号位不变,...
  • 其他语言有无符号位的类型 int数据类型占4个byte(字节) 最高位是符号位 00000000 00000000 00000000 00000000 -2^31~2^31 正数的原码反码补码都一样 负数的反码 = 它的原码符号位不变,其他位取反(0 ->1 ;...
  • 利用C++实现MFC界面的源码补码反码的一个转换工具,可以用VS直接编译运行,可以供初学者参考学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,130
精华内容 10,452
关键字:

原码补码反码