二进制

【组成原理】概述

梦想与她 提交于 2020-02-28 04:05:37
目录 计算机概述 数据 总线 CPU 存储器 输入/输出设备 计算机的时标系统 计算机概述 计算机的基本组成: 存储器 :     实现 记忆功能 的部件用来存放计算程序及参与运算的各种数据 运算器 :     负责数据的 算术运算和逻辑运算 即数据的加工处理 控制器 :     负责对程序规定的 控制信息 进行分析,控制并协调输入,输出操作或内存访问 输入设备 :    实现 计算程序和原始数据 的输入 输出设备 :    实现 计算结果 输出 组成的联系: 图一 图二 计算机的工作过程: 用户 打开程序 系统把程序 代码段和数据段 送入计算机的内存 控制器从存储器中 取指令 控制器分析, 执行指令 ,为取下一条指令做准备 取下一条指令 ,分析执行,如此重复操作,直至执行完程序中全部指令,便可获得全部指令 冯·诺依曼机制: 程序存储 采用 2进制 计算机系统的体系结构: 图一: 图二 数据概述 数据信息的两种基本方法: 按值 表示 :  要求在选定的进位制中正确表示出数值,包括数字符号,小数点正负号 按形 表示 :  按一定的 编码方法 表示数据 信息的存储单位: 1KB=2^10B=1024 Byte 1MB=2^20B=1024 KB 1GB=2^30B=1024 MB 1TB=2^40B=1024 GB 浮点表示法: 公式 :  N=2^(+-e)*(+-s) 说明 :

部分和问题(挑战程序设计竞赛)

ⅰ亾dé卋堺 提交于 2020-02-28 03:49:43
问题描述: 给定一个整数K和一个整数数列a1,a2,…,an,判断是否可以从中选出若干个数,使得它们的和恰好为K。 样例: 输入: n=4 a={1,2,4,7} K=13 输出: Yes(13 = 2 + 4 + 7) 解法一:   这题可以套用生成子集的模板,求出这个整数数列的所有子集,去判断每一个子集是否满足条件。我们可以利用二进制求解,将数组中的n个元素对应n位的二进制。其中每一个元素对应一个二进制位。那么从0到2的n次方减一的每一个数就可以对应一个子集。也就是说所有子集一共有2的n次方个。(这里要注意测试数据的范围,要注意所有子集数有没有超出int) 代码如下: import java . util . * ; public class 部分和 { public static void main ( String [ ] args ) { Scanner scanner = new Scanner ( System . in ) ; int n = scanner . nextInt ( ) ; int [ ] arr = new int [ n ] ; for ( int i = 0 ; i < n ; i ++ ) { arr [ i ] = scanner . nextInt ( ) ; } int k = scanner . nextInt ( ) ; if (

错误提示,解决方案java.lang.UnsatisfiedLinkError: Couldn't load easemobservice from loader dalvik.system.PathClassLoad

六月ゝ 毕业季﹏ 提交于 2020-02-28 00:33:31
解决方案: 在libs下面创建一个armeabi-v7a文件夹 把armeabi *.so的文件复制一份 放在armeabi-v7a运行测试通过 关于 armeabi和armeabi-v7a 区别如下: armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips的就悲催的被忽视了),不同的cpu的特性不一样,armeabi就是针对普通的或旧的arm cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm cpu。 在android.mk里可配置以下宏: TARGET_CPU_API := armeabi APP_ABI := armeabi 现在还有x86的了,其实armeabi 、armeabi-v7a 和x86是编译 NDK 库时,可以使用三种支持的应用二进制接口(ABI): ‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE 的设备为目标的库。 具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI 创建的二进制代码将可以在所有 ARM* 设备上运行。 ‘armeabi-v7a’ – 创建支持基于 ARM* v7 的设备的库,并将使用硬件 FPU 指令。 ‘x86’ – 生成的二进制代码可支持包含基于硬件的浮点运算的 IA-32 指令集。 希望能够帮助你。 丶贰九 转发,请注明出处:[url

如何制作一个 RPM 文件

落爺英雄遲暮 提交于 2020-02-27 23:04:52
它们是包含文件和元数据的档案文件。当安装或卸载 RPM 时,此元数据告诉 RPM 在哪里创建或删除文件。正如你将在上一篇文章中记住的,元数据还包含有关“依赖项”的信息,它可以是“运行时”或“构建时”的依赖信息。 例如,让我们来看看 fpaste。你可以使用 dnf 下载该 RPM。这将下载 Fedora 存储库中可用的 fpaste 最新版本。在 Fedora 30 上,当前版本为 0.3.9.2: $ dnf download fpaste ... fpaste-0.3.9.2-2.fc30.noarch.rpm 由于这是个构建 RPM,因此它仅包含使用 fpaste 所需的文件: $ rpm -qpl ./fpaste-0.3.9.2-2.fc30.noarch.rpm /usr/bin/fpaste /usr/share/doc/fpaste /usr/share/doc/fpaste/README.rst /usr/share/doc/fpaste/TODO /usr/share/licenses/fpaste /usr/share/licenses/fpaste/COPYING /usr/share/man/man1/fpaste.1.gz 源 RPM 在此链条中的下一个环节是源 RPM。Fedora 中的所有软件都必须从其源代码构建。我们不包括预构建的二进制文件。因此

Java学习日记----基础1

微笑、不失礼 提交于 2020-02-27 18:59:12
------- android培训 、 java培训 、期待与您交流! ---------- 1 标识符:由26个字母大小写,0-9,"_"和"$"组成.   1.1 关键字:被java赋予民特殊含义的单词,这个形式在C++中也有.   1.2 标识符的定义规则:(1)不可以以数字开头;(2)不可以使用关键字.     在java中严格区分大小写,在起名字时,为了提高阅读性,要尽量有意义.   1.3 main不是关键字,但是却可以被JVM识别.   1.4 ava的名称规范:(1)包名:所有字母都小写,如xxyyzz.            (2)类名,接口名:多单词组成时,单词的首字母大写,如XxYyZz.            (3)变量名,函数名:多单词组成时,第一个单词首字母小写,第二单词开始,首字母大写.如xxYyZz.            (4)常量名:所有字母都大写,单词间用下划线连接,如XX_YY_ZZ. 2 常量:java中固定不变的一些数据.   2.1 Java中常量的分类:(1)整数常量:所有整数;(2)小数常量:所有的小数; (3)布尔型常量:true和false; (4)字符常量:将一个数字,字母或符号用单引号''标识; (5)字符串常量:将一个或多个字符用双引号标识,可以为空; (6)null常量:null.   2.2 对于整数

2020.2.13Java基本语法

拟墨画扇 提交于 2020-02-27 15:02:20
今天的学习比较顺利,算是我与知识和平交流的一天。 二进制、八进制、十进制、十六进制以及互相转换;数据类型以及自动类型转换,强制类型转换;算术运算;语法结构。 由于是之前学过的内容,有一定的印象,所以我感觉比较简单,与此同时,我get到了很多新技能,比如二进制与其他进制之间的转换技巧,以及强制转换中需要注意的地方,我之前一直记不住switch的语法格式,其实很简单: switch(整型表达式){ case 值A:执行语句;break; case 值B:执行语句;break; default:执行语句; } 在我认为的难点就是这些了 来源: oschina 链接: https://my.oschina.net/u/4455988/blog/3165915

2的幂次方

跟風遠走 提交于 2020-02-27 14:45:10
判断一个数n是不是2的幂次方 方法1:n除以2 余数是0 剩余除数再除以2 知道除数为0,如果余数一直是0则true; public static Boolean getResult(Integer n){ if(n==2){ return true; }else if(n==1){ return false; }else{ if(n%2!=0){ return false; }else{ return getResult(n/2); } } } 方法2:二进制 二进制中 2的幂次方都是1后面全是0的形式 如16 10000;所以n&(n-1)==0可以判断是否为这种形式的二进制; public static Boolean getResult(Integer n){ return (n&(n-1))==0; } 来源: https://www.cnblogs.com/xiatc/p/12371919.html

hashmap的扩容方式为什么是2的n次方?

。_饼干妹妹 提交于 2020-02-27 12:07:24
HashMap的初始容量和扩容都是以2的次方来进行的,那么length-1换算成二进制的话肯定所有位都为1,就比如2的3次方为8,length-1的二进制表示就是111, 而按位与计算的原则是两位同时为“1”,结果才为“1”,否则为“0”。所以h& (length-1)运算从数值上来讲其实等价于对length取模,也就是h%length。 如果不满足前提条件“HashMap的初始容量和扩容都是以2的次方来进行的”,会发生什么问题呢? 假设当前table的length是15,二进制表示为1111,那么length-1就是1110,此时有两个hash值为8和9的key需要计算索引值,计算过程如下: 8的二进制表示:1000 8&(length-1)= 1000 & 1110 = 1000,索引值即为8; 9的二进制表示:1001 9&(length-1)= 1001 & 1110 = 1000,索引值也为8; 这样一来就产生了相同的索引值,也就是说两个hash值为8和9的key会定位到数组中的同一个位置上形成链表,这就产生了碰撞。 而查询的时候需要遍历这个链表,这样就降低了查询的效率。同时,我们也可以发现,当数组长度为15的时候,hash值会与length-1(1110)进行按位与,那么最后一位永远是0,而0001,0011,0101,1001,1011,0111

是否有printf转换器以二进制格式打印?

拟墨画扇 提交于 2020-02-27 06:42:01
我可以用printf作为十六进制或八进制数打印。 是否有格式标记打印为二进制或任意基数? 我正在运行gcc。 printf("%d %x %o\n", 10, 10, 10); //prints "10 A 12\n" print("%b\n", 10); // prints "%b\n" #1楼 此代码应满足您最多64位的需求。 我创建了2个函数pBin&pBinFill。 两者都做同样的事情,但是pBinFill用fillChar填充前导空格。 测试功能生成一些测试数据,然后使用该功能将其打印出来。 char* pBinFill(long int x,char *so, char fillChar); // version with fill char* pBin(long int x, char *so); // version without fill #define kDisplayWidth 64 char* pBin(long int x,char *so) { char s[kDisplayWidth+1]; int i=kDisplayWidth; s[i--]=0x00; // terminate string do { // fill in array from right to left s[i--]=(x & 1) ? '1':'0'; //

Codeforces Round #581 (Div. 2)

纵然是瞬间 提交于 2020-02-27 05:44:31
传送门 A. BowWow and the Timetable (思维) •题意   在 Saint Petersburg 城市,每天有 T ($T \leq 2_100$)分钟;   这个城市有一个车站,该车站只在第 $4^0,4^1,4^2,\cdots$ 分钟有车经过;   问,如果在 S 分钟到达车站,会错过几辆车?   其中,S 是按照二进制的形式给出; •题解一(BigInteger)   用 Java 中的大数处理这个题,就是先将 S 转化成十进制,在转化成 4 的幂的形式;   属于无脑操作,细节看代码; •Code    CodeForces1204A.java •题解二(二进制转四进制)   $2^k=4^{\lfloor{\frac{k}{2}}\rfloor}$;   且有 $2^0+2^1+2^2+\cdots +2^k < 2^{k+1}$   假设输入的二进制数 S 存放在字符数组中,并且 |S| = k,即最高位为 $2_{k-1}$;   如果 k-1 为奇数,即 k 为偶数,那么 $4^{\lfloor{\frac{k-1}{2}}\rfloor} < S < 4^{\lfloor{\frac{k}{2}}\rfloor}$,易得共错过 $\frac{k}{2}$ 辆车;   如果 k-1 为偶数,那么,$S \ge 4^{\lfloor{