符号计算

计算机组成原理学习(二)原码,反码,补码

烈酒焚心 提交于 2020-02-12 17:35:44
数据在计算机中以二进制串存储,这种01序列叫“ 机器数 ”。 每个机器数都有对应的值,比如0001换算就是现实里十进制的1,这个值叫它的“ 真值 ”。 1.原码 为了表示负数的前面的符号,一种办法是采用“ 最高一位表示符号而非数值 ”的编码方式——原码。 如八位的运算器,机器数0000 0001的真值为1,1000 0001的真值为-1。第一位为符号位,剩下的位表示真值。 解决了符号表示问题,但是引出了新的问题,那就是1000 0001不能按照常识意义上来换算了,按正常二进制转十进制的换算,1000 0001实际上代表129。 这样在硬件电路设计时会带来麻烦,要让机器能够先辨识符号位,再进行真值的计算。 2.反码 任何减法都可以转化为加上一个负数,如 1+1 = 1+(-1)。做加法比减法简单,要是能用一种新的编码方法把-1表示出来,然后和+1做加法,最后结果按照这种编码方式还是正确的,那就太好了。于是 为了让符号位也能参与计算 ,反码诞生了。 反码的表示方法基于原码,最高位仍然是符号位。正数的反码是其本身,负数的反码 符号位不变,剩下的位全部取反 。 +1 原码0000 0001,反码 0000 0001 -1 原码1000 0001,反码1111 1110 人们发现,采用这种编码方式,算出来的值是正确的。 用反码计算: 1-1 = 1+(-1) = 0000 0001 +

课堂动手动脑

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-12 16:07:56
1、编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果。 源代码: 1 package tutorial; 2 import javax.swing.JOptionPane; 3 4 public class Option2 { 5 6 7 public static void main(String[] args) { 8 String firstNumber,secondNumber,result; 9 10 int number1,number2; 11 12 firstNumber = JOptionPane.showInputDialog("The first number :"); 13 14 secondNumber = JOptionPane.showInputDialog("The second number :"); 15 16 number1 = Integer.parseInt(firstNumber); 17 18 number2 = Integer.parseInt(secondNumber); 19 20 result = number1 + " + " + number2 + " = " + (number1 + number2) + "\n" + number1 + " - " + number2 + " = " +

类加载机制详解

三世轮回 提交于 2020-02-11 22:39:12
之前在介绍JVM内存模型的时候(参看: JVM内存模型 ),提到了在运行时数据区之前,有个Class Loader,这个就是类加载器。用以把Class文件中的描述信息加载到内存中运行和使用。以下是《深入理解Java虚拟机第二版》对类加载器机制的定义原文: 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 一般我们把类从加载到内存到卸载出内存的整个过程分为七个阶段:加载,验证,准备,解析,初始化,使用和卸载。其中,验证、准备和解析统称为连接。 在这几个阶段中,加载、验证、准备、初始化和卸载这五个阶段的顺序是固定的,而解析阶段则不一定,它有时候可能会在初始化之后开始,这是为了支持Java的运行时绑定。需要特别注意的是,这里边的顺序指的是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常会互相交叉的混合进行。 了解类的加载机制非常有必要,下面将逐个解释说明类加载的全过程(即加载,验证,准备,解析,初始化五个阶段)。相信看完之后,你会对Java类某些问题有更深刻的理解(例如,为什么子类可以覆盖父类的字段和方法?饿汉式单例为什么天生是线程安全的?) 加载 加载过程分为三步: 1)通过一个类的全限定名来获取定义此类的二进制字节流。 2

简单理解符号执行技术

允我心安 提交于 2020-02-10 20:02:22
0X00 前言 因为最近看的很多静态检测的论文中涉及到了符号执行的概念,而在我第一次听到符号执行实际上是在我的一些搞二进制学长口中,自然认为是和 web 没啥关系,但是现在看来只是因为我我太菜了,很多知识在更高的层次看起来都是交融的,而不是我现在看到的全部都是互不相关的板块,或许这也就是为什么要读研吧, 不读研那就疯狂努力吧 。好了,废话不多讲了,由于我对符号执行的理解没有达到很高的层次,不能进行更详尽的总结分析 ,故我只能在网上找了一些我个人认为总结的比较好,并且通俗易懂的文章进行一些摘录, 在此之前先对这些优秀的作者表示感谢,文章之后我会附上我引用的文章或者论文的链接。 0X01 通俗地解释符号执行 Wiki中的定义是:在计算机科学中,符号执行技术指的是通过程序分析的方法,确定哪些输入向量会对应导致程序的执行结果为某个向量的方法(绕)。通俗的说, 如果把一个程序比作DOTA英雄,英雄的最终属性值为程序的输出(包括攻击力、防御力、血槽、蓝槽),英雄的武器出装为程序的输入(出A杖还是BKB)。那么符号执行技术的任务就是,给定了一个英雄的最终属性值,分析出该英雄可以通过哪些出装方式达到这种最终属性值效果。 可以发现, 符号执行技术是一种白盒的静态分析技术 。即,分析程序可能的输入需要能够获取到目标源代码的支持。 同时,它是静态的,因为并没有实际的执行程序本身,而是分析程序的执行路径

python第九课(字符计算符号)

懵懂的女人 提交于 2020-02-10 18:48:02
1.字符串:用单引号和双引号包起来的文字(不包括纯数字),就叫做字符串。 字符串的四种格式: 'zsj' "zsj" '''zsj''' """zsj""" 2.文本的计算符号:加+ 乘* 如: n="zsj" n1="tyw" n2=n+n1 print(n2) ### n2=zsjtyw 3.数字的计算符号: 加+ 减 - 乘* 除 / 取余数 % 求幂 ** 取整商 // 4.在python中,如果需要用input输入数字进行计算,需要在input前加上int(取整),才能正常运行代码。(且输入的数只能为整数) 如: n = int(input('请输入')) n1 = (n // 2) print(n1) 来源: https://www.cnblogs.com/zsjlh/p/12291966.html

python基础面试集锦(1-50)

亡梦爱人 提交于 2020-02-10 18:16:28
目录 1、Python和Java、PHP、C、C#、C++等其他语言的对比 2、简述解释型语言和编译性语言? 3、Python解释器种类以及特点? 4 、位和字节的关系? 5、b、B、KB、MB、GB的关系? 6、一个字符不同编码对应的字节数? 7、PEP8编码规范? 8、or and 计算规则 9、求结果:or and 10、ASCII、unicode、utf-8、gbk区别? 11、字节码和机器编码的区别? 12、三元运算编写格式? 13、Python2和Python3的区别? 14、一行代码数值交换?交叉赋值 15、python2和python3中Int和long的区别? 16、xrange和range的区别? 17、字符串的反转序列?步长-1切 18、文件操作时:xreadlines和readlines的区别? 19、列举布尔值位false的常见值? 20、is和==的区别? 21、那些情况下,y!=x-(x-y)会成立? 22、现有字典dict = {'a':20,'b':25,'c':10,'d':50}请按字典中的value值进行排序? 23、如何将字典的键值互换? 24、字典和json的区别? 25、什么是可变、不可变类型? 26、存入字典里的数据有没有先后排序? 27、字典推导式? 28、描述一下dict的item()方法与iteritems()的不同? 29

数值格式化 NumberFormat、 DecimalFormat、 RoundingMode

六月ゝ 毕业季﹏ 提交于 2020-02-08 12:10:09
NumberFormat 【简介】 java.text.NumberFormat extends java.text.Format extends java.lang.Object 实现的接口:Serializable, Cloneable 直接子类:ChoiceFormat, DecimalFormat NumberFormat 是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。NumberFormat 还提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名称是什么。 NumberFormat 可用于格式化和解析任何语言环境的数值。使代码能够完全独立于小数点、千位分隔符甚至所用特定小数位数的语言环境约定,并与数值格式是否为偶小数无关。 若要格式化当前 Locale 的数值,可使用其中一个工厂类方法: myString = NumberFormat.getInstance().format(myNumber); 若要格式化不同 Locale 的日期,可在对 getInstance 的调用中指定它。 NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH); 还可以使用 NumberFormat 来解析数值: myNumber = nf.parse(myString); 使用 getInstance 或

多么痛的领悟——计算机组成原理第一讲

十年热恋 提交于 2020-02-07 11:01:53
多么痛的领悟——计算机组成原理第一讲 前言 大家好,我是 泰斗贤若如 ,我又开始更新文章了,本次更新的内容是 计算机组成原理 ,是大学计算机相关专业必须学的,我是大三上学期学的,刚开始学的时候感觉很难,get不到重点,直到学了一遍,被期末考试逼了一遍,我才有所领悟,多么痛的领悟啊。我打算自己把整本书中的重点总结一遍,第一是自己过一遍,第二是给新手赠予玫瑰,希望你们学的时候花最少的时间学更多的知识,别再在考试前病急乱投医了(偷笑表情) 一、计算机系统 1、计算机的硬件 计算机系统由“ 硬件 ”和“ 软件 ”两大部分组成。 所谓“ 硬件 ”,是指组成计算机的各种物理装置,我们平时说的“买一台计算机”,购买的其实就是硬件,最主要的硬件有:主板、中央处理器、硬盘、内存等。 主板 是整个计算机的“ 交通枢纽 ”,各种器件都要连接到主板上,才能正常工作。 中央处理器 是计算机的“ 大脑 ”,它是计算机的 运算核心 和 控制核心 。 硬盘 是计算机的“ 笔记本 ”,上面记录了各种数据,需要的时候,就会从这里读取或往这里写入。 内存 是计算机的“ 稿纸 ”,一般来说,同一个处理器能利用的内存越大,运算速度也就越快。 有趣的是, 显示器 虽然是人们关注最多的设备,但它其实并非是一个必须的硬件,对于个人计算机来说,即使没有显示器也可以正常运行,但只要少了上面所说硬件中的任何一个,计算机就不能正常运行了

位运算与MOD快速幂详细知识点

孤街醉人 提交于 2020-02-07 08:15:14
最近写的一些题目设计到了数论的取模 如下题 链接: https://ac.nowcoder.com/acm/contest/3003/G 来源:牛客网                     时间限制:C/C++ 1秒,其他语言2秒                     空间限制:C/C++ 262144K,其他语言524288K                         64bit IO Format: %lld 题目描述   牛可乐有七个整数 a,b,c,d,e,f,g.并且他猜想a d +b e +c f =g 但是牛可乐无法进行如此庞大的计算。请验证牛可乐的猜想是否成立。 输入描述:   第一行一个正整数 T,表示有 T 组数据。   每组数据输入一行七个整数a,b,c,d,e,f,g 。   保证 1≤T≤1000 , −10 9 ≤a,b,c,g≤10 9 , 0≤d,e,f≤10 9 保证不会出现指数和底数同为 0 的情况。 输出描述: 每组数据输出一行,若猜想成立,输出 Yes ,否则输出 No。 示例:   输入:      2     1 1 4 5 1 4 258     114514 1919810 1 2 3 4 1   输出:      Yes     No   说明:      1 5 +1 1 +4 4 =258     114514 2

变量与常量及运算符

大城市里の小女人 提交于 2020-02-06 00:05:57
变量(Variable):   变量可以理解为可以改变的一个值。   百度百科中这样说明变量:     变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象。    Java中的变量一般分为以下前两种(严格的讲分为三种):     1.局部变量:指在方法或语句块内部定义的变量。     2.实例变量(又叫“成员变量”或“全局变量”):指在方法外部,类的内部定义的变量。     实例变量在使用前必须要先初始化(就是必须赋值),如果不初始化,则Java会自动的初始化为该类型的默认初始值(数值型:0或0.0、字符型:16位的0、布尔值:false)。     3.类变量(被static修饰的变量)     示例: package com.lxj.cnblogs; /** * 测试变量 * @author 刘小将 * */ public class TestVariable { boolean flag = false; //这是一个全局变量 static String str = "Abc"; //这是一个类变量 public void function() { int a = 1; /