补码

反码,补码,原码

我怕爱的太早我们不能终老 提交于 2019-11-30 00:07:28
原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。 如单字节的5的原码为:0000 0101;-5的原码为1000 0101。 反码:正数:正数的反码与原码相同。负数:负数的反码,符号位为“1”,数值部分按位取反。可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算。 如单字节的5的反码为:0000 0101;-5的反码为1111 1010。 补码:正数的补码就是其本身。负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值。 如单字节的5的补码为:0000 0101;-5的原码为1111 1011。 示例程序: i mport java.util.Scanner; public class ZJF { public static void main(String[] args) { int a=5; int b=-5; System.out.println(Integer.toBinaryString(a)); System.out.println(Integer.toBinaryString(b)); } } 结论:正数采用原码,负数采用补码。 来源: https://www

1.python的基础语法

这一生的挚爱 提交于 2019-11-29 23:52:58
1.#的作用 :   注释,标注的文本。 2.python支持的数字类型:    整数型: 不区分long和int,无上限。布尔型只有两个值(True和False),注意首字母大写。    浮点数型: 1.2、3.1415、-0.12、1.46e9等价于1.46*10^9。    复数型: 1+2j 3.python中的字符串:   ▪ 使用‘ ’‘单双引号引用的字符的序列,单引号于双引号的作用是一样的。   ▪ ’‘’和“”“单双三引号,可以跨行、可以在其中自由的使用单双引号。   ▪ 在字符串前面加上r或者R,表示该字符串不作特殊处理。 4.转义序列:   \\、\t(Tab)、\r(回车)、\n(换行)、\'(表示单引号本身的意义,单引号本身是字符串的界定符,前面加上反斜杠就表示了自身的意义)、\"(同单引号) print('ab\'c')#在这里如果不加入反斜杠的话,会报语法错误 print('ab"c')#在这条print()语句中,因为有两个单引号界定了字符串,因此里面的双引号可以不使用反斜杠,当然使用也是正确的。 print(r'ab\"c\t',100,r'\n')#如果在字符串前面加上r或R的话,转义符是失效的,该条语句输出的是 ab\"c\t 100 \n 5.缩进:   ▪ 未使用C等语言的花括号,而是采用缩进的方式表示层次关系   ▪ 约定使用4个空格缩进

二进制的原码补码和反码

雨燕双飞 提交于 2019-11-29 23:47:12
二进制的最高位为符号位,其中0表示正数,1表示负数; 正数的原码补码反码都是相同的; 负数的反码是负数的符号位不变,其余位取反(即1变0,0变1); 负数的补码是反码加1; 举例:计算机字长为八位,所以转换一下, 正一的原码:0000 0001 反码:0000 0001 补码:0000 0001 (均相同) 负一的原码:1000 0001(最高位的1表示为负数) 反码:1111 1110(最高位的符号位不变,其余取反) 补码:1111 1111(反码加一) 来源: https://www.cnblogs.com/123-haozijia/p/11539958.html

原码、反码、补码解读

核能气质少年 提交于 2019-11-29 22:28:17
原码: 二进制定点表示法(八位),即最高位为符号位(左数第一位),“0”表示正,“1”表示负,其余位表示数值的大小(二进制)。 反码: 正数的反码与其原码相同。 负数的反码是对其原码依次取反(0->1,1->0),但是符号位除外。 补码:正数的补码与其原码相同 负数的补码是在其反码的末尾加一(用二进制的加法,注意1+1进位)。 正数的原码,反码和补码是相同的。 正数举例: 负数举例: 来源: https://www.cnblogs.com/hhjing/p/11537724.html

源码、反码和补码

痴心易碎 提交于 2019-11-29 22:27:21
一、机器数和真值 要想学习原码, 反码和补码,首先需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 2、真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。 例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。 所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 二、源码、反码和补码 1、源码 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1] 原 = 0000 0001 [-1] 原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是: [1111 1111 , 0111 1111] 即:[-127 , 127]

原码反码补码

僤鯓⒐⒋嵵緔 提交于 2019-11-29 22:23:55
计算机储存符号的时候,0表示+;1表示-; 计算机字长为8位; 原码 是符号加上真值的绝对值,用第一位表示符号,其余位表示值; [+1]原=00000001; [-1]原=10000001; 反码: 正数的反码就是自己本身原码; 负数的反码是在原码的基础上符号位不变,其余的各位取反; [+1]原=[00000001]原=[00000001]反; [-1]原=[10000001]原=[11111110]反; 补码 正数的补码就是本身原码; 负数的反码是在原码的基础上,符号位不变,其余取反,最后加1; [+1]原=[00000001]原=[00000001]反=[00000001]补; [-1]原=[10000001]原=[11111110]反=[11111111]补; 正整数的原码反码补码都是一样的; 来源: https://www.cnblogs.com/1234yyf/p/11537799.html

二进制的原码,反码,补码简介

↘锁芯ラ 提交于 2019-11-29 19:28:53
二进制的原码,反码,补码简介 一,原码 1,正数的原码:将正数转换为二进制位就是这个正数的原码(高位为0,表示为正数,这个位置是符号位。) 例如:在计算机中,int 类型的十进制数10,的原码为: 0 0000000 00000000 00000000 00001010。 在计算机中,int 类型的十进制数8,的原码为: 0 0000000 00000000 00000000 00001000。 2,负数的原码:将负数的绝对值转换成二进制位然后在最高位前补1就是这个负数的原码。(这个位置是符号位。) 例如:在计算机中,int 类型的十进制数-10,的原码为: 1 0000000 00000000 00000000 00001010。 在计算机中,int 类型的十进制数-8,的原码为: 1 0000000 00000000 00000000 00001000。 二,反码 1,正数的反码:正数的反码就是原码。 例如:在计算机中,int 类型的十进制数10,的原码,和反码都为: 0 0000000 00000000 00000000 00001010。 在计算机中,int 类型的十进制数8,的原码,和反码都为: 0 0000000 00000000 00000000 00001000。 2,负数的反码:负数的反码等于原码除符号位以外所有的位取反(即,除符号位以外,原码为1

java int

牧云@^-^@ 提交于 2019-11-29 19:20:21
  JAVA是采用Unicode编码。每一个字节占8位。32位系统,每个int是 4个字节,32位。   byte是Java原始类型。byte可存储在[-128,127]范围以内的整数值。   Java中的所有整数值都是32位的int值,除非值后面有l或L(如235L),这表示该值应解释为long。   java中的int的取值范围计算思路如下:32个格子中放满0或1的方法有2的32次方种。所以有两种可能,两种推算方法: 1、将二进制最大的数字(32个1)转换成10进制,即 4294967296 2、有2的32次方种算法,那么依照10进制最大的数就是2的32次方。即4294967296。 所以java中的int的取值范围:2的31次方:+/- 2147483648   int的取值范围为: -2^31——2^31-1,即-2147483648——2147483647 1、对于正数来说,它的补码就是它本身。 2、对于负数来说,它的补码是它对应的正数的二进数所有位取反之后加一。 3、由负数的补码求原码也是相同的操作(所有位取反+1)即为该负数的绝对值   int是4个字节,32位,   10000000 00000000 00000000 00000000 是补码,第一位为符号位,1表示负数,所以   对剩下的位取反,结果为 1111111 11111111 11111111

编程语言了解

我与影子孤独终老i 提交于 2019-11-29 18:20:57
1.计算机能识别的只有0和1,所有的编程语言最终在运行时候都是转成了2进制文件被计算机执行。 2.语言也分:机器语言,汇编语言,高级语言或者编译型语言,解释型语言,脚本语言。 3.编译型语言执行速度要快于解释型语言,编译型语言(C/C++...)相当于把代码一次全部解析完之后交给CPU执行,解释型语言(JAVA....)一边解析一边执行。 4.二进制转10进制。从个数开始依次乘以1,2,4,8,16,32,64..........最后的和相加就是得到的10进制数。10101==>1*1+0*2+1*4+0*8+1*16==>21。 5.十进制转2进制。每次除以2取余,除尽为止,最后把所有的余数逆向排序(最后一位余数排在最前面2进制的最高位),排列组合起来就是10进制的2进制数。 6.bit位是计算机中最小单位,它表示一个二进制数0或者1。1Byte(字节)=8bit(位)。word是两个字节16位,dword三个字节32位。 7.计算机中存在正码,反码,补码。一个正数的三码合一,都是其本身。负数原码:最高位不变,后面数和其绝对值相同,负数反码:符号位不变其他位按位取反,负数补码:反码+1。 8.计算机存在都是补码,目的是为了把减法转为加法。 来源: https://www.cnblogs.com/PrideAssassin/p/11525474.html

计算机负数为什么使用补码及浮点型计算

自古美人都是妖i 提交于 2019-11-29 16:42:21
之所以不使用原码是因为源码在0处会产生正0和负0的区分,具有二义性,四则运算时符号位需要单独处理,且计算机硬件来说运算规则复杂,包括判断符号,异号操作,借位等。 负数采用补码操作后,可以将加减法统一为加法运算。 负数的补码是由该数的反码的最末位加1求得。 eg: X=-1010101的三码: 原:11010101;反:10101010;补10101011 X=-0.1011的三码: 原:1.1011;反:1.0100;补:1.0101 【+0】=00000000;【-0】=10000000 【+0】补=00000000;【-0】补=(11111111)反+1=100000000(溢出第一位)=00000000;因此消除了正0负0的二义性,第一个问题得到解决。 计算67-10=57 67补码=01000011;-10补码=11110110; 67-10=01000011+11110110=100111001(第一位溢出)=00111001=57 将减法转化为加法,且不需要考虑符号位 但并不完全正确,比如两个正数相加变成了一个负数,这就是超出该数据的最大表达值的情况。 浮点型计算:以32位float为例: 最高位为符号位s,之后8位记作Exponent,剩余23位记作Significand result=(-1)的s次方X(1+Significand)X2的(Exponent-128