-
二进制的规律
2019-10-27 18:56:34电脑是一个很神奇的东西。...在昨晚从一写到五百一十二然后每个数都转换为二进制,一开始在写的时候觉得真是太难了,那么多数怎么写呀?但是写了写却发现二进制的排列是有顺序的。可以在数与数之间...电脑是一个很神奇的东西。小小的CPU里装着很多很多的计算。有些数是连用人脑也需要费一些时间。但是电脑依旧可以在短时间内算出来。但是电脑的算法和人的算法是远远不一样的。电脑的算法只有零和一直说也就是二进制,而人的算法则是由零到九,是十进制。
在昨晚从一写到五百一十二然后每个数都转换为二进制,一开始在写的时候觉得真是太难了,那么多数怎么写呀?但是写了写却发现二进制的排列是有顺序的。可以在数与数之间找到一些规律。当然逢二进一就不用多说了。比如说十进制的奇数转化为二进制的时候,尾数肯定是一,十进制的偶数转化为二进制的时候,尾数肯定是零。还有尾数是由00 01 10 11的顺序4个一轮回持续循环的,再说每一竖排从后向前看,是01 01 01 (2的0次方)然后是0011 0011 0011(2的1次方) 、00001111 00001111 00001111(2的2次幂)~~~~也是呈现2的n次方增长数间隔的。
当然接触到二进制的时候就肯定会接触到十进制转化为二进制和二进制转化为十进制。在二进制转化为十进制的加法方法中,要总结了很多条规律。比如说2的n次方就是1后面有n个零、用大数求小数再持续性求和找节点等等。
这样的二进制让我感受到和十进制不一样的数字感。觉得研究计算机的人确实很厉害,创造二进制的人也是很有头脑。 -
2019牛客暑期多校训练营(第五场)generator 1 (十进制优化矩阵快速幂)
2019-08-02 16:40:24题意: 给了递推式,,已知和,求。 思路: 听了出题人的讲解,才知道矩阵快速幂...那么20怎么算出来呢? 这时候,我们就先拼出个10来:我们先让。 这样我们的实际上就是原来的,然后我们在用来更新,,。这样...题意:
给了递推式,
,已知
和
,求
。
思路:
听了出题人的讲解,才知道矩阵快速幂还能这样的优化!
我们保留这四个最基本的矩阵:
,
,
,
那么怎么进行十进制优化呢?
举个例子:
比如:
,这个用十进制优化怎么求?
我们可以用保留的矩阵
来拼出23的低位的3
那么20怎么算出来呢?
这时候,我们就先拼出个10来:我们先让。
这样我们的
实际上就是原来的
,然后我们在用
来更新
,
,
。这样就能通过这些来得到幂次是10~100的了。(真神奇)
代码:
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e6+5; ll mod; char s[maxn]; struct Matrix { ll a[2][2]; Matrix(){ memset(a,0,sizeof(a)); } friend Matrix operator * (Matrix a, Matrix b) { Matrix tmp; for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ for(int k=0;k<2;k++){ (tmp.a[i][j]+=(a.a[i][k]*b.a[k][j])%mod)%=mod; } } } return tmp; } }; int main() { ll x,y,a,b; scanf("%lld%lld%lld%lld",&x,&y,&a,&b); scanf("%s",s); scanf("%lld",&mod); int len=strlen(s); Matrix tmp[4],ans; tmp[0].a[0][0]=a; tmp[0].a[0][1]=b; tmp[0].a[1][0]=1; tmp[0].a[1][1]=0; tmp[1]=tmp[0]*tmp[0]; tmp[2]=tmp[1]*tmp[1]; tmp[3]=tmp[2]*tmp[2]; ans.a[0][0]=ans.a[1][1]=1; for(int i=len-1;i>=0;i--){ int x=s[i]-'0'; for(int j=0;j<4;j++){ if(x>>j&1){ ans=ans*tmp[j]; } } tmp[0]=tmp[1]*tmp[3]; tmp[1]=tmp[0]*tmp[0]; tmp[2]=tmp[1]*tmp[1]; tmp[3]=tmp[2]*tmp[2]; } printf("%lld\n",(ans.a[1][0]*y%mod+ans.a[1][1]*x%mod)%mod); return 0; }
-
计算机组成原理平均cpi怎么算_计算机组成原理(一)
2021-01-14 16:16:25冯洛伊曼计算机结构特点:冯洛伊曼结构模型采用存储程序方式计算机有运算器、控制器、存储器、输入设备及输出设备五大基本部件组成存储器用于存放指令和数据;运算器完成算术运算和逻辑运算;操作人员通过输入设备和...冯洛伊曼计算机结构特点:
冯洛伊曼结构模型
采用存储程序方式
计算机有运算器、控制器、存储器、输入设备及输出设备五大基本部件组成
存储器用于存放指令和数据;运算器完成算术运算和逻辑运算;操作人员通过输入设备和输出设备使用计算机
计算机内部以二进制形式表示指令和数据;每条指令由操作码和地址码组成;操作码指出操作类型;地址码指出操作数的地址;由一串指令组成程序。
硬件:中央处理器:数据通路(指令执行过程中所流经的部件,包括各类运算部件,最重要的是ALU算数逻辑部件)、控制器(用来对指令的译码,生成相应的控制信号,以控制数据通路进行特定操作)
存储器:内存(主存和高速缓冲存储器)、外存(辅助存储器和海量后备存储器)
外部设备:输入设备、输出设备、I/O控制器(控制外部设备的控制逻辑)
总线:数据信息传输的通路,CPU、主存、I/O控制器通过总线互连
软件:系统软件操作系统
语言处理程序
数据库管理系统(DBMS)实用程序——磁盘碎片整理程序等
应用软件:专门为某一程序所编写的各类程序
计算机系统的层次结构
最终用户:使用应用程序完成特定任务的计算机用户
系统管理员:指利用操作系统等软件提供的功能对系统进行配置、维护和管理,以建立高效合理的系统环境供计算机用户使用的操作人员
应用程序员:指使用高级编程语言编制应用软件的程序员
系统程序员:指设计和开发系统软件的程序员
程序由多条指令组成
指令的执行过程:根据PC取指令到IR
指令译码并送出控制信号
取操作数
执行指令
写回结果
PC更新:为了能自动执行程序中的指令,CPU必须能够自动得到下一条指令的地址并送到PC;所以取出指令送到IR后稳定后,PC自动更新。定长指令字系统:每条指令的长度都一样PC=PC+指令长度(相同值)
不定长指令字系统:每条指令的长度不一样PC=PC+指令长度(不同值)
指令周期:从一条指令的启动到下一条指令的启动之间的间隔时间
机器周期:是指令执行中每一步操作所需的时间。一般以CPU中完成一个运算操作所需的时间作为机器周期的基本时间,机器周期也称CPU周期。
时钟周期:指计算机的主频周期,也称T周期或T状态
吞吐率(带宽):表示在单位时间内所完成的工作量。
响应时间(执行时间或等待时间):是指从作业提交开始到作业完成所需要的时间。
CPU时间:指CPU用于程序执行的时间,包括用户CPU时间和系统CPU时间。
用户CPU时间计算需用到的指标:时钟周期:用于对控制信号定时的同步信号即为CPU的时钟信号,其宽度为一个时钟周期
时钟频率:CPU的主频
CPI:表示执行一条指令所需的时钟周期数。CPU执行时间=程序所含时钟周期数÷时钟频率
=程序所含时钟周期数×时钟周期
程序总时钟周期数=程序所含指令条数×CPI
MIPS:平均每秒钟执行多少百万条指令。
MFLOPS:表示每秒所执行的浮点运算有多少百万次,是基于所完成的操作次数而不是指令数来衡量。
基准程序是一个测试程序集,由一组程序组成。是专门用来进行性能评价的一组程序。
SPEC测试程序集是应用最广泛,也是最全面的性能评测基准程序集。
-
96KB存储器的怎么算地址范围_吐血整理!这篇带你彻底理解主存中存储单元地址的分配...
2020-11-23 06:27:06在阅读本文之前,建议没有基础的读者先阅读下主存的基本组成结构:五分钟理解主存储器的基本组成结构存储单元的字地址:我们来看张图:在上面的图中,每一个小矩形代表一个存储单元,大矩形表示主存中的存储体。...在阅读本文之前,建议没有基础的读者先阅读下主存的基本组成结构:
五分钟理解主存储器的基本组成结构
存储单元的字地址:
我们来看张图:
在上面的图中,每一个小矩形代表一个存储单元,大矩形表示主存中的存储体。
通常都是以8位二进制为一个存储单元,也就是一个字节。然后在我们的计算机中,不管是笔记本还是台式机,总会听到CPU一次处理数据的能力是32位还是64位,其实,这个32位或者64位就是用来表示字长。字长用来表示字的长度。而字就是由字节构成。
在上图中,一个存储单元为1个字节,这4个字节又构成一个字,每个字有字地址,在上图中表示出来了。关于字地址的表示方式,也有两种,这两种表示方法的区别,我后面也会用一篇文章来解释清楚。
那么,上图的字长为多少呢?
我们来分析下,4个字节构成一个字,一个字节等于8个比特,所以总共就是32位了。现在我们的计算机,都是64位了,很少有32位的计算机出现了。
举例:
在学习到主存储体的章节时,这三道题我们经常会看到,经常会有小伙伴很迷惑,不知道怎么分析,我们来看下下面三道题:
1.设地址线为24根,按字节寻址,有多少存储字?
2.如果存储容量不变,若字长为16位,按字寻址有多少存储字?
3.如果存储容量还不变,若字长为32,按字寻址有多少存储字?我们先分析下第一个问题。
这里假如地址线有24根,由于地址也是用2进制表示的,那么每根地址线就有0或者1两位,地址可以表示为从00000..00000(24位)—11111...11111(24位)。一共就有2^24位,也就是2^24个地址。转化之后就是16MB的地址。这些地址表示存储单元的位置,所以存储单元的个数也就是16MB。
那么,16MB怎么计算的呢?
2^24Byte(字节)=16777216Byte
16777216Byte/1024=16384KByte
16384KByte/1024 = 16MByte而且,1Byte=8Bit,那么16MByte = 128Mbit。
第一个问题的意思就是,一个字等于8比特,也就是一个字节。一个存储单元可以存放一个8位二进制数,这个二进制数就是一个存储字。其实,就是问有多少个存储单元。经过计算,就是16MB个。
我们先分析下第二个问题。
在上面第一个例子中,一个存储单元中有8位,那么16MB个存储单元中,可以存放16MB×8位。就是存储单元的容量,简称存储容量。
那么,第二个问题中,存储容量不变,就是一样有16MB×8的空间。字长为16位,我们按字寻址,有多少个存储字?
如果是按字寻址,我们知道字长16位,那么总容量除以字长就是存储字的个数:
(16MB*8)/ 16 = 8M
那么第三个问题也是一样的,只是把字长换成了32
(16MB*8)/ 32 = 4M
CSDN链接:
CSDN-专业IT技术社区-登录blog.csdn.net -
-
2018 蓝桥杯省赛 B 组模拟赛(五) 代码填空:快速幂
2018-03-26 16:37:20一个数的整数次幂,是我们在计算中经常用到的,但是怎么可以在 \mathcal{O}(\log (n))O(log(n)) 的时间内算出结果呢?代码框中的代码是一种实现,请分析并填写缺失的代码,求 x^y \mod pxymodp 的结果。这题做过... -
c++ 异或_位运算中异或的常见用法总结
2020-11-27 13:16:04点击蓝色“五分钟学算法”关注我哟加个“星标”,一起学算法异或(^) 这个位操作运算符相信大家一定都不陌生,这个运算符可以用来解决很...解法思路 看到这样的问题,能想到的只有位运算,问题是怎么算?相信大家小学... -
2014 icpc 西安现场赛 I - International Collegiate Routing Contest
2017-10-17 13:55:11-0-马上上计网了,感觉没什么空再看笛卡尔树了2333来水篇博客 还一个多礼拜就要去西安当分母了。第一次当分母内心还有点小紧张2333 然后我们来看看这个强行银牌题。...那么怎么才算有效前缀呢。看/后面那个数字, -
wpe pro英文原版 M2M sniff 修改封包工具
2013-05-11 14:10:5816进制有0--F十六个数字,它为表示十到十五的数字采用了A、B、C、D、E、F六个数字,它们和十进制的对应关系是:A对应于10,B对应于11,C对应于12,D对应于13,E对应于14,F对应于15。而且,16进制数和二进制数间有一... -
疯狂的程序员
2012-07-18 18:05:32路过妹妹楼下,绝影往四周看了五遍,一个人也没有。来不急多想,就到了校医院。 因为是外伤,情况并不是很严重,也就是清洗伤口,缝针。绝影心里惦记着那妹妹,可那时候手机手机还没现在这样普及,普及的是传呼机。... -
vc++ 应用源码包_1
2012-09-15 14:22:12多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树... -
vc++ 应用源码包_2
2012-09-15 14:27:40多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树... -
vc++ 应用源码包_6
2012-09-15 14:59:46多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树... -
vc++ 应用源码包_5
2012-09-15 14:45:16多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树... -
vc++ 应用源码包_4
2012-09-15 14:38:35多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树... -
vc++ 应用源码包_3
2012-09-15 14:33:15多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树... -
JDBC【PreparedStatment、批处理、处理二进制、自动主键、调用存储过程、函数】 JDBC【事务、元数据、改造JDBC工具类】 JDBC【数据库连接池、DbUtils框架、分页】 JDBC面试题都在这里 Druid数据库连接池就是这么简单...
-
C#微软培训教材(高清PDF)
2009-07-30 08:51:177.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 .77 第八章 流 程 控 制 .79 8.1 条 件 语 句 .79 8.2 循 环 语 句 .86 8.3 条 件 编 译.90 8.4 异常处理语句 .95 8.5 小 结 .100 第三部分 ... -
C#微软培训资料
2014-01-22 14:10:177.6 位 运 算 .69 7.7 其它特殊操作符 .72 7.8 小 结 .77 第八章 流 程 控 制 .79 8.1 条 件 语 句 .79 8.2 循 环 语 句 .86 8.3 条 件 编 译.90 8.4 异常处理语句 .95 8.5 小 结 .100 第三部分 ...