原码

动手动脑问题以及二进制补码反码

主宰稳场 提交于 2019-11-30 07:24:48
动手动脑: 当输出时字符串在加号前面时,后面的加号所连接的数据也会变成字符串输出,而不会进行四则运算;如果在前面时则不会有这种问题。 二进制: 计算机是以二进制储存的数据,都有一个原码,而反码则是原码首位不变,负数是其他位置0变1,1变0;正数的原码、反码、补码都一样;负数的补码则是将反码加1即可(加完之后,遇2进一)。 来源: https://www.cnblogs.com/haheihei/p/11571722.html

原码反码补码

这一生的挚爱 提交于 2019-11-30 07:16:37
原码就是把原来的数化成2进制,比如10的原码就是00001010,+10的原码是00001010,最高位的0代表 这个数是正数(最高位就是符号位)。 -10的原码就是10001010,最高位的1代表这个数是负数 +10的原码是00001010,那他的反码、补码都和原码相同 ,也是00001010,原因是正数的原 反 补码相同 。-10的原码是10001010,那他的反码是11110101,也就是符号位不变,其他位0变1,1变0. 他的补码是在反码的基础上,最低位加1,也就是11110110。 来源: https://www.cnblogs.com/wsq666/p/11571557.html

反码补码原码

眉间皱痕 提交于 2019-11-30 07:16:00
正数以原码形式储存在计算机中; 负数以补码形式储存在计算机。 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 来源: https://www.cnblogs.com/huiwuyan20/p/11571508.html

原码补码反码简单介绍

我的梦境 提交于 2019-11-30 03:52:56
1.基本概念及计算方法 原码:二进制数加上符号位,第一位1表示为负数,0表示为正数。 反码:正数的反码是其本身;负数的反码符号位不变,其余位按位取反,即原码中二进制数0变为1,1变为0。 补码:算机里面数据存储都是以补码形式存放。计算方式为:正数的补码是其本身;负数的补码是在反码的基础上+1。 举例: 例:-1的二进制 原码:10000000 00000000 00000000 00000001 反码:11111111 11111111 11111111 11111110 补码:11111111 11111111 11111111 11111111 2.注意:原码不能直接参与运算,可能出现错误。负数用补码表示时,可以把减法转化为加法来避免出现的错误。 来源: https://www.cnblogs.com/ywqtro/p/11556447.html

课后作业2

旧时模样 提交于 2019-11-30 03:47:10
一,原码补码和反码; 原码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。 反码:如果是正数,则表示方法和原码一样;如果是负数,符号位不变,其余各位取反,则得到这个数字的反码表示形式。 补码:如果是整数,则表示方法和原码一样;如果是负数,则将数字的反码加上1(相当于将原码数值位取反然后在最低位加1)。 二,由于s和t并为引用同一个对象,所以s和t的值也不一样,所以第一个输出结果为false。而s和t也并不是原始数据。第二个输出结果也为false,而第三个结果中由于开始Size s=Size.SMALL;而Size u=Size.valueOf("SMALL");所以s==u,所以输出为true。枚举类型是一种基本数据类型,而不是一种构造类型。枚举类型不属于原始数据类型,他的每个具体值都引用一个特定对象。 三,System.out.println("0.05+0.01="+(0.05+0.01)); System.out.println("1.0-0.42="+(1.0-0.42)); System.out.println("4.015*100="+(4.015*100)); System.out.println("123.3/100="+(123.3/100)); 输出结果为: 0.05+0.01=0.060000000000000005

原码补码反码

女生的网名这么多〃 提交于 2019-11-30 03:44:13
所谓原码就是符号位加上数字的二进制表示,int为例,第一位表示符号 (0正数 1负数)简单期间一个字节表示 +7的原码为: 00000111 -7的原码为: 10000111 一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,(符号位不变化,其余位数取反)。 换言之 该数的绝对值取反(绝对值取反各位都取反)。 为了简单起见,我们用1个字节来表示一个整数: +7的反码为:00000111 -7的反码为: 11111000 补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,去到反码然后加1。(反码加1就是补码)为了简单起见,我们用1个字节来表示一个整数: +7的补码为: 00000111 -7的补码为: 11111001 如图是用函数输出二机制码 来源: https://www.cnblogs.com/kongfanbing/p/11553634.html

大二第二周记

回眸只為那壹抹淺笑 提交于 2019-11-30 02:00:18
1、EnumTest.java s和t并未引用一个对象,输出false; s并不是原始数据类型,输出false; 将u从原始类型转化为枚举类型,s和u引用同一个对象,输出true; 列出所有数值,输出SMALL,MEDIUM,LARGE; 枚举类型,具有特殊类型的常量值列表; 可以将字串转化为枚举; 枚举用于循环中输出所有数值; 2、反码、补码和原码 反码:正数的反码和原码相同,负数的反码是对该数除符号位外各位取反。 补码:正数的补码和原码相同,负数的补码是在保持符号位不变的情况下,将负数的原码中的0变成1,1变成0,得到的是该负数的反码,然后再将其加1得到的结果就是负数的补码。 任意数的反码的反码是原码本身。 任意数的补码的补码是原码本身。 Java中的数是通过补码来计算的。 3、同名变量的屏蔽原则 大多数作用域是用花括号来界定的,全局变量具有全局作用域,花括号内的具有局部作用域或语句作用域。在谁的作用域内,就由谁发挥作用,符合“我的地盘我做主”的原则。 4、数据类型的强转 数据类型的转换是在所赋值的数值类型和被变量接收的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。数据类型的转换可以分为隐式转换(自动类型转换)和显式转换(强制类型转换)两种。 如果以下 2 个条件都满足,那么将一种类型的数据赋给另外一种类型变量的时,将执行自动类型转换(automatic

C++绪论

纵然是瞬间 提交于 2019-11-29 16:33:50
(服务器也不用来干什么,就维持着个博客,感觉浪费,所以迁移过来了) 知识点部分 软件 包括了使计算机运行所需的各种 程序 和相关的 文档资料 。 程序是指令的集和,而指令就是计算机可以识别的命令。 指令系统:一台计算机所能识别的所有指令的集合。 机器语言:计算机硬件系统可以识别的二进制指令组成的语言。 汇编语言:机器指令映射为一些可以被人读懂的助记符(ADD,SUB)。 汇编程序将汇编语言转换为机器语言。 高级语言:屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定含义得到数据命名和容易理解的执行语句。 面向对象:将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征)形成类。 优点:(1)代码重用(2)缩短软件开发周期(3)使得软件风格统一 结构化程序设计与面向对象的方法对比 结构化:自顶向下,逐步求精,其程序结构是按功能划分为若干个基本模块,模块直接形成树状结构,模块之间的关系尽可能简单,功能上独立,每个模块内部均是由顺序,选择,循环三种结构组成的,模块化的实现方法就是使用子程序。缺点:数据和数据处理过程分割为相互独立的实体,数据结构发生改变时,相关处理过程也要发生改变。 面向对象的方法:将数据和对数据的操作方法放在一起,作为一个相互依存,不可分割的整体—对象。对同类型对象抽象出其共性,形成类,类中的大多数数据

java 类型转换的原理

[亡魂溺海] 提交于 2019-11-29 16:00:52
最近在看JDK的源码,在看源码的时候看到了0xff这么个东东,从这里引出了类型转换。因此在此记录下。 在写原理之前先看几个例子。byte b=-1;int a=b;然后打印a得出的结果是-1.int b=-1;byte a=(byte)b;打印a得出来的是-1。int a=255;byte b=(byte)255;打印b得出的结果也是-1;而把这个强制转出来的-1再转回int,得出的确不是255了,有点奇怪了。这是为什么那?好了,废话不过说,下面就开始讨论为什么了。在讲这个之前先来几个概念。二进制中的原码,反码,补码,补位,真值。再有就是byte类型和int类型分别占了多少位。这里需要说一下,二进制的高位是符号位,1表示负数,0表示正数。注:java是用补码存储数据的。 byte类型占一个字节,一个字节由8位二进制组成,所以说byte类型占了8位。int类型占4个字节,所以说int类型占了8位。 真值:这个就看字面意思,int a=-1;a的真值就是-1. 原码:int类型的-1的二进制表示,由于-1是负数,又是int类型的,所以他需要32个二进制来表示,二进制的最高位是符号位,所以为1,1的二进制为1,所以-1的二进制表示为 1000 0000 0000 0000 0000 0000 0000 0001; 反码:正数的反码就是原码,负数的反码是在原码的基础上,符号位不变

关于计算机中的《补码》,公式:-n=~n+1 引伸:~n=-n-1

孤街浪徒 提交于 2019-11-29 16:00:37
在计算机系统中,数值一律用补码来表示(存储)。主要原因是使用补码可以将符号位和其他位统一处理;同时,减法也可以按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。补码跟源码的转换过程几乎是相同的。 补码概述   求给定数值的补码表示分以下两种情况: ⑴正数的补码   与 原码 相同。   【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。) ⑵负数的补码   负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。   同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。   【例2】求-7的补码。   因为给定数是负数,则符号位为“1”。   后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位不变)→加1(11111001)   所以-7的补码是11111001。   已知一个数的补码,求原码的操作分两种情况:   ⑴如果补码的符号位为“0”