补码

java基础1

Deadly 提交于 2019-12-03 09:34:08
Part1 01. 计算机的概述 计算机全称:电子计算机,俗称电脑,是一种能按照程序运行,自动,高速的处理海量数据的现代化智能电子设备。 计算机的应用:科学计算,数据处理,自动控制,cad,Ai(Artificial Intelligence) 计算机硬件: 在计算机系统中由电子,机械和光电 元件等组成的和种物理装置的总称。 cpu,主板,内存,电源,主机箱,显卡/,键盘,显示器。 计算机软件: 系统软件:dos,windows,Linux,Unix,Mac,Android,IOS 应用软件:office,qq,weixin 软件开发:用开发工具和计算机语言做软件 计算机语言: 02.软件开发概述 软件开发就是用开发工具和计算机语言做出软件 计算机语言: 人与计算机的交流方式 机器语言:0101001 汇编语言: C语言 高级语言:java,c#,php,python 03人机交互方式 A:图像界面 方便,简单,直观。 B:DOS窗口方式 要有控制台,要记住很多的命令,麻烦。 04键盘功能键和快捷键介绍 A:键盘认识 Tab,Shift,Ctrl,Alt,Windows,空格,Enter,PrtSc,上下左右 Ctrl+A:全选 Ctrl+C :复制 Ctrl+V :粘贴 Ctrl+X :剪切 Ctrl+Z :取消 Ctrl+S :保存 05打开DOS窗口的方式 常用:win+R

补码到底是个什么东西

我是研究僧i 提交于 2019-12-03 05:18:13
概述 先引入一个前提,在计算机中数字是以二进制进行存储的,也就是我们看到的2,在计算机中存储的是10。我们进行的加法运算 2+1=3 在计算机中是这样的(这里先假设计算机存储的是4位二进制数字) 0010+0001=0011 很容以看的出来,4为二进制数能表示的最大数字是1111,就像两位十进制数表示的最大数字是99一样。那如果在进行加法运算时,结果超出存储的容量怎么办?比如: 9+9=18 二进制表示为: 1001+1001=10010 ,但是,因为只能存储4位数的原因,最高位丢了,结果变成了 0010 ,也就是2,这时是发生了溢出的。在做运算时要避免数值发生溢出(当然,现在计算机存储的数字为64位,日常使用完全不用担心) 运算不光有加法,还有减乘除。乘法就是多次加法,除法就是多次减法。那么减法如何实现呢?在刚开始的时候,计算机只能进行加法运算,这时一部分人想办法让其能够直接进行减法计算,而另一部分人想通过加法来实现减法,最终后者先给出了解决方案。(只是我臆想的情景) 通过加法来实现减法 还记得上面提到的,四位二进制数表示的最大数字为15,当发生溢出时: 16=>二进制:10000 => 0 17=>二进制:10001 => 1 显然,去掉最高位等于减去16 那么能不能利用加法溢出来实现减法呢?下面简单推倒一下: 9-2=7 若要实现 9+x=7 那么利用溢出的原理,就要实现 9

原码, 反码, 补码 详解

早过忘川 提交于 2019-12-03 05:15:23
本文转载自 http://www.cnblogs.com/zhangziqiu/ , 作者 张子秋 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 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. 原码 原码就是符号位加上真值的绝对值,

二进制的原码、补码、反码

血红的双手。 提交于 2019-12-03 01:46:06
最近看Python一道练习题: a = 234 b = ~a print(b) #得到-235 涉及到负数补码,所以找资料稍微研究了一番,过程如下: [0]1110 1010 (234,[]里表示符号位) 取反后:[1]0001 0101,因为符号位是1表示负数,负数补码存储,需要取反并加1: [1]0001 0101 ->取反加1 -> [1]1110 1011,就是-235。 总结: 正整数的补码是其二进制表示,与原码相同。 负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。(即:取反加1) 相关链接: 百度百科 补码 (解释还是很细致的) 百度百科 原码 来源: https://www.cnblogs.com/vaiky/p/11769899.html

小护士读书笔记系列之《深入理解计算机系统》第二章信息的表示和处理(三)

匿名 (未验证) 提交于 2019-12-03 00:41:02
欢迎来到小护士读书笔记系列之《深入理解计算机系统》第二章信息的表示和处理(三)。上回,小护士讲到了整数是如何在计算机中表示为无符号数和有符号数的,而这次小护士将说明计算机如何做加减乘除。 无符号数加法跟普通数学运算一样,也是 1 + 1 = 2 1 + 1 = 2 。唯一不同的地方是无符号数做加法时,如果结果值太大,超出位数最大表示范围,就会溢出。例如: 9+12 = [1001] + [1100] 21 = [10101] 假设仅用4位表示一个数,则对结果值进行截断。可得, 5 = [0101] 快速小技巧:21 mod 16 = 21 mod 2 4 2 4 = 5 4次幂对应4位数表示,2为底对应二进制。 如何检测是否溢出? 如果 5 < 9 || 5 < 12 == true 则为溢出。 补码加法跟无符号数加法差不多,也是遵循普通数学运算逻辑,但由于补码支持负数,因此也会有 1 + ( 1 ) = 2 1 + ( 1 ) = 2 。 同样,补码加法也会溢出,但分为两种: 正溢出:补码的正数相加溢出 负溢出:补码的负数相加溢出 为了方便大家理解,直接给出表格说明补码如何做加法: x y x+y 截断值 -8 [1000] -5 [1011] -13 [10011] 3 [0011] -8 [1000] -8 [1000] -16 [10000] 0 [0000] -8

剑指offer--二进制中1的个数

匿名 (未验证) 提交于 2019-12-03 00:38:01
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解析:首先,计算机中负数就是用补码表示的,就是用补码表示的,用补码表示的!然后,核心思想是:把 一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0 } 文章来源: 剑指offer--二进制中1的个数

计算机中数相加(相减)的溢出原因详细解释

匿名 (未验证) 提交于 2019-12-03 00:34:01
这个问题可能困惑很多初学者,之前网上的解释也大都比较简单,我来整理一份全面详细的解答 1,首先你要明白,计算机中的符号数有三种表示方法,即 原码 、 反码 和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理。 同时,加法和减法也可以统一处理 (这里可以参考 点击打开链接 ,里面有解释补码怎么写)。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。 2,明白了计算机中数是以补码形式存在后,我们举例分析,比如我int a,分配给a八位二进制,因为要留一位做符号位(正负号),所以a能表示的数的范围(补码的形式)(实际上正数补码是其本身,负数补码是在原码(也就是二进制表示其正数的基础上符号位不变取反加一)是-2^(8-1)~ 2^(8-1)-1),之所以负数比正数范围大一,是因为补码中的符号位即表示符号,也可以表示数值如1000,0000(补码)表示-128,这是指在表示端点值的时候符号位才有双重含义。 3,这里举个负数补码计算的例子,分配八位计算-5-4=-9,首先-4的补码,先算4的原码0000,0100,取反加一1111,1100,同理-5补码1111,1011两个补码相加得1,1111

疯狂补汇编1

匿名 (未验证) 提交于 2019-12-03 00:34:01
panelatta先生说刘慧婷的书就是个用户文档。。。。。 于是我决定摸索一个快速学习用户文档的流程用以自救。。 看一下目录: 1基础知识部分 2寻址方式 3常用指令系统 4伪指令 5分支循环 6子程序设计 7宏的1.2 学习方式基本上是不断提出问题然后搜索答案,同时用费曼方法理清这是怎么一回事。 以能做出任选的课后题为标准。   1.常用指令系统 目录如下: 数据传送指令 算数运算指令 逻辑与位移指令 串操作指令   (1)数据传送指令 二。 push,pop。push sth ss:sp是栈顶指针,入栈时sp要减2(两个字节)?pop是加2,pop到目的操作数。 三。xchg ,要求是交换的双方长度一致,不能在内存中交换。   (2)算数运算指令 机械内部的具体运算过程是怎样的? 切入基础知识部分。 1 .8位1字节,几位一字就是几位计算机。 2 .进制转换:<-除2取余,乘2取整-> 3. 无符号表示法,存2 n -1个数(有一个0),溢出就是轮回来。 符号加绝对值:最左位0是正数,1是负数。2 n-1 -1范围,有正零和负零。正数溢出1变-0.负数在正数的右边。 4 .二进制补码表示法: 负数在正数的左边。只有一个零。1111-0000,-1用大的数字表示。转换为2进制之后负数会被转换为补码,正数不变。 取补码的方法:从右到左,把第一个1以后的位数取反。

计算机中正负数的表示

匿名 (未验证) 提交于 2019-12-03 00:26:01
转自:http://jinweijingjing.blog.sohu.com/82869658.html 在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。 数值的补码表示也分两种情况: (1)正数的补码:与原码相同。 例如,+9的补码是00001001。 (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码 0000111按位取反为1111000;再加1,所以-7的补码是11111001。 已知一个数的补码,求原码的操作分两种情况: (1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。 (2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取 反,然后再整个数加1。 例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负 数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。 在“闲扯原码、反码、补码

第六章――计算机的运算方法

匿名 (未验证) 提交于 2019-12-03 00:26:01
逻辑右移补0 算术右移填充符号位的值 现代计算机中浮点数一般采用IEEE 754 标准。 单精度浮点数(float): 符号部分+指数部分(也叫阶码)+尾数部分 尾数部分:将小数点前面的值固定为1(正则表达式),尾数越多,精度越高 指数部分使用移码(可简化浮点数的运算) 反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则 补码:解决负数加法运算正负零问题,弥补了反码的不足 移码:解决数值比较复杂,运算复杂等问题 总之,反码与补码都是为了解决负数运算问题,跟正数没关系,因此,不管是正整数还是正小数,原码,反码,补码都全部相同。 一个正数和负数互为补数时,他们的绝对值之和为模数 1、正数的原码、补码、反码均为其本身; 2、负数(二进制)的原码、补码、反码公式: 反码 = 原码(除符号位外)每位取反 补码 = 反码 + 1 移码 = 补码符号位取反 转载请标明出处: 第六章――计算机的运算方法 文章来源: 第六章――计算机的运算方法