补码

数据的存储

自作多情 提交于 2020-02-27 18:30:36
数据的存储 字节序 小端:数字的低位存到内存的低地址上。 小(小端)小(低位)小(低地址) 大端:数字的低位存到内存的高地址上。 指针变量有两个方面的信息 1.这个内存对应的地址在哪(指针变量中存放的数字) 2.这个内存对应的大小是多少(指针类型体现的信息) 计算机采用补码来存储,通过补码的方式,能够吧二进制的加减法统一成加法运算 例 计算 2-1即 2+(-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的补码 原码取反再加一,得到补码 1000 0000 0000 0000 0000 0000 0000 0010 2的补码(正数的原码,反码,补码都一样) 将-1的补码与2的补码相加,溢出的不管 %d 打印一个有符号的十进制正数(int) char 一个字节的变量,当按照%d打印的时候,就会把char隐式转换成int类型的变量,再打印,%d 打印一个有符号的十进制正数(int) 这个转换过程中,高位的三个字节也要填充,按照符号为来填充(如果a的符号位是0,高位就补0;反之补1) 例 char a = -128 1000 0000 1111 1111 1111

计算机中定点数表示方法练习

心不动则不痛 提交于 2020-02-27 13:26:30
1【单选题】针对8位二进制数,下列说法中正确的是 。(5.0分) A、-127的补码为10000000 B、-127的反码等于0的移码 C、+1的移码等于-127的反码 D、0的补码等于-1的反码 正确答案: B 2【单选题】若某数x的真值为-0.1010,在计算机中该数表示为1.0110, 则该数所用的编码方法为 码。(5.0分) A、原 B、补 C、反 D、移 正确答案: B 3【单选题】已知定点整数x的原码为1xn-1,xn-2,xn-3,…x0,且,则必有 。(5.0分) A、 B、 C、 D、 正确答案: A 4【单选题】已知定点小数x的反码为1,x1,x2,x3,且,则必有 。(5.0分) A、 B、 C、 D、 正确答案: D 5【单选题】 在整数定点机中,下述第______种说法是正确的­。(5.0分) A、原码和反码不能表示 -1,补码可以表示 -1; B、三种机器数均可表示 -1; C、三种机器数均可表示 -1,且三种机器数的表示范围相同; D、三种机器数均不可表示 -1。 正确答案: B 6【单选题】在下列机器数_____中,零的表示形式是唯一的。(5.0分) A、原码 B、补码 C、反码 D、原码和反码 正确答案: B 7【单选题】下列数中最小的数是______。(5.0分) A、(1101001)2 B、(52)8 C、(133)8 D、(30)16

Java取余运算

风流意气都作罢 提交于 2020-02-27 09:32:27
int a = 6; ~a = ? Java中运算都是以补码进行计算的,6的原码为 00000000 00000000 00000000 00000110,正数的补码 = 反码 = 原码 所以补码也是 00000000 00000000 00000000 00000110,然后进行取反操作变成了 11111111 11111111 11111111 11111001, 接着将得到的数值也变成补码,因为取反后符号位变成了1,所以就成了求负数的补码,负数补码 = 反码的基础上加1,反码为 10000000 00000000 00000000 00000110,补码为10000000 00000000 00000000 00000111 所以~a = -7 int a = -8 ~a = ? -8的原码为 10000000 00000000 00000000 00001000,反码为 11111111 11111111 11111111 11110111,补码为 11111111 11111111 11111111 11111000,然后对补码进行取反为 00000000 00000000 00000000 00000111,因为取反之后的数值变成了正数,所以补码也是此值 所以 ~a = 7 结论 ~n = -(n + 1) 来源: CSDN 作者: 富卿尘 链接: https:/

初识JAVA虚拟机--数字编码

纵然是瞬间 提交于 2020-02-26 17:40:31
一、 整数在Java虚拟机中的标识 java虚拟机中的整数 :byte、short、int、long四种;分别标识8位、16位、32位、64位有符号整数。 整数在计算机中使用补码来表示,java虚拟机中也同理 。 原码 :符号位加上数字的二进制表示 int 10 的原码为:00000000 00000000 00000000 00001010 int -10 的原码为: 10000000 00000000 00000000 00001010 反码 :就是在原码的基础上符号位不变其余取反 int -10的反码为: 11111111 11111111 11111111 11110101 补码 :负数的补码就是反码加1,正整数的补码就是原码本身 int 10 的补码:00000000 00000000 00000000 00001010 int -10的补码:11111111 11111111 11111111 11110110 int a = - 10 ; for ( int i = 0 ; i < 32 ; i ++ ) { int t = ( a & 0x80000000 >>> ) >>> > ( 31 - i ) ; System . out . print ( t ) ; } 以上代码可以打印-10在虚拟机内的时间表示:

Java千问:Java位运算经典应用(一)

天大地大妈咪最大 提交于 2020-02-25 22:45:56
很多人认为位运算在实际开发过程中并没什么用,学习位运算也只是为了应付面试。这种想法是错误的,接下来我们就通过几篇连载文章介绍一下位运算在实际开发过程中的几个经典应用实例。如果对位运算规则掌握还不是很熟练,可以先阅读《 Java千问:Java语言位运算符详解 》。这篇文章不仅详细讲解了Java位运算的基本规则和一些常用的运算定律,同时还在文中提到了一些常用的位运算实际应用,比如可以用位运算操作的方式快速把某个变量所在的内存单元清零,或者位运算的方式实现某个变量快速倍增等等。但文中所这提到的这几个实际应用比较简单,本次连载文章将为大家讲述的是更加复杂和实际的应用经典案例。此外,为获得更好的阅读效果,请各位读者在读本文之前先熟练掌握”补码”的计算规则。 一、判断整数的奇偶性 按照传统的思路,判断一个整数的奇偶性是通过用这个数与2求模,看运算结果是否为0。学了位运算符以后,我们可以换一种思路来考虑问题。我们知道:Java语言中,所有数字存储在内存中,都要先转换成补码的形式。任何一个偶数用补码表示出来后,它的最后一个二进制位都是0,而奇数补码的最后一个二进制位都是1。所以,我们可以通过判断这个整数的补码的最后一位二进制数是0还是1,来判断这个数是偶数还是奇数。判断的方法就是用这个数与1进行按位与的操作,如果结果为0,那么这个数就是偶数,否则就是奇数。如果大家不理解这个算法的原理,请看下图:

JAVA 学习笔记 - 基础语法1

允我心安 提交于 2020-02-24 06:00:40
1. 类的定义 public class 与 class的区别 一个java文件只有一个public class, 而且类名必须与文件名一致。 一个java文件可以有多个class定义,javac编译之后会生成多个class文件。 如果一个public class中定义了一个主函数,那么这个类也叫做主类。 public static void main(String args[]){ } 2.基本数据类型 int 32位 long 64位 short 16位 byte 8位 char 2位 float 32位 double 64位 整型的最大值+1就变成了整型的最小值 ,相当于溢出。 如果要避免溢出可以在之前加(long)强制转换 (long)(int.Max_VALUE+1) 3.转义符号为 \ 例如System.out.println("\"Hello world!\""); 4. 小数的默认类型为double 因此需要这么写,float f = 3.0f 才可以通过编译 5. 数据类型转换分为两种: 自动类型转换、强制类型转换 自动类型转换,默认为在表达式中容量最大的变量 比如 3.5/5 结果为一个double类型 自动类型转换中,如果与字符串进行+运算,则所有参与变量将自动转换为字符串比如“1+2=”+1+2 1+2=12 如果要避免这个问题需要将其他数字运算加括号,“1

位运算

时光总嘲笑我的痴心妄想 提交于 2020-02-21 22:23:12
文章目录 一、进制表示 1、进制 2、进制的表现形式 3、原码、反码和补码 二、位运算 1、&——与运算(and) (1)运算规则 (2)应用 2、|——或运算(or) (1)运算规则 (2)应用 3、^——异或运算 (xor) (1)运算规则 (2)应用 4、~——非运算(not) (1)运算规则 三、移位运算 1、<<——左移运算 2、>>——右移运算 3、>>>——无符号右移运算(没有无符号左移运算) 四、位运算应用 1、判断奇偶数(与运算) 2、交换两个数(异或) 3、求 m 的 n 次方 4、找出不大于 N 的最大的 2 的幂指数 一、进制表示 1、进制 进制是一种记数方式 ,可以用有限的数字符号代表所有的数值。由特定的数值组成。 2、进制的表现形式 二进制: 由 0 和 1 两个数字组成,都是以 0b 开始; 八进制: 由 0~7 数字组成,为了区分于其他进制的数字,都是以 0 开始; 十进制: 都是以 0~9 这九个数字组成,不能以 0 开头; 十六进制:由 0 ~ 9 和 A~ F 组成,为了区分于其他进制的数字,都是以 0x 或 0X 开始。 3、原码、反码和补码 原码——即为计算机中对数值的二进制表示 。如,十进制的 5 用二进制表示为 0000 0101 ;(最高位为符号位,1 表示负,0 表示正,并且在原、反、补的转换中,符号位不变) 反码 ——即取反

原码,反码,补码,移位

ε祈祈猫儿з 提交于 2020-02-17 07:09:34
https://www.cnblogs.com/btgyoyo/p/6371398.html 复习下二进制的有关知识 1.所有的数据都是以二进制的形式存储在硬盘上。对于一个字节的8位到底是什么类型 计算机是如何分辨的呢? 其实计算机并不负责判断数据类型,数据类型是程序告诉计算机该如何解释内存块. 2.对于字符的存储,先将字符转化成其字符集的码点,(码点就是一个数字),然后把该数字转成2进制存储。所以我们只要记得数字的存储就ok了。字符的码点程序采用无符号处理,即没有符号位,数值型默认都是有符号位的。 1个字节的最高位是符号位所以一个数字能够存储的范围是-128-127 3.原码 正数5: 0000 0101 负数5: 1000 0101 4.反码 正数5: 0000 0101 负数5: 1111 1010 5.补码 正数5: 0000 0101 负数5: 1111 1011(-5在硬盘上的存储方式) 1.可以看到正数的原码 与 其反码补码相同 2.负数的原码最高位为13.负数的反码: 符号位不变,其余各位按位取反4.负数的补码:在其反码的基础上+15.负数是以其补码的方式存储在硬盘上的 6.左移操作(<<) 规则: 右边空出的位用0填补 高位左移溢出则舍弃该高位。 计算机中常用补码表示数据: 数据 127,补码和原码一样:0111 1111。 左移一位: 1111 1110 ->

python基础-变量运算符(3)

时光毁灭记忆、已成空白 提交于 2020-02-17 02:24:24
一、注释 注释就是对代码的解释和说明。目的是为了让别人和自己很容易看懂。为了让别人一看就知道这段代码是做什么用的。正确的程序注释一般包括序言性注释和功能性注释。序言性注释的主要内容包括模块的接口、数据的描述和模块的功能。模块的功能性注释的主要内容包括程序段的功能、语句的功能和数据的状态。–来自百度百科 注释的分类 1.单行注释 以#开头,#右边的所有东西当做说明,而不是真正要执行的程序,起辅助说明作用 #我是注释,可以在这里写一下功能说明之类 print("我上面一行是对我的注释") 2.多行注释 多行注释是三对双引号或者三对单引号都可以,对,你没有听错是三对啊,一个都不能少,而且是单引号和双引号都可以,但是不要傻呼呼的一边三个双引号,一边三个单引号,要单引号都单引号,要双引号都双引号。 """  我是多行注释1   我是多行注释2   我是多行注释3""" print("我上面的是多行注释") 二、变量 在Python中,存储一个数据,需要定义一个变量 number1 = 1 #numbe1就是一个变量,用来保存数据:1 number2 = 2 #number2也是一个变量,用来保存数据:2 sum = number1+number2 #sum也是一个变量,用力保存1+2的值 说明: 所谓变量:就是可以改变的量。 程序就是用来处理数据的,而变量就是用来存储数据的

计算机的原码, 反码和补码

大憨熊 提交于 2020-02-17 01:45:48
一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 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 [