日常碰到的计算机基础知识汇总

与十进制数28.5625相等的四进制数是:130.21
计算:
公式:整数部分除4取余,直到商小于1,逆序排列,得到整数部分。小数部分乘4取整,直到小数部分为0,顺序排列,得到小数部分。对于十进制转其他进制同样适用!

首先整数部分:28短除4,依次得到余数0、3、1,然后倒过来就是130了。

小数部分:0.5625*4 = 2.25,取出整数部分2,小数部分还有,继续乘。
                  0.25*4 = 1.0,取出整数部分1,小数部分没有了,不用继续了。

所以最后的结果是130.21。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二进制下:右移一位相当于"/2" ; 左移一位相当于“*2”:
已知 int a=0x122 ,则 a/2 为:
0x122--二进制100100010
右移1位后10010001
为十进制145

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

If you computed 32 bit signed integers F and G from 32 bit signed X using F = X / 2 and G = (X>>1), and you found F!=G, this implies that

X is negative
F - G = 1
G - F = 1

计算机中数值运算都以补码方式进行,

正数的补码与原码相同(eg:4= 0100),F/2和F>>1结果相等;
负数的补码是原码的反码+1(eg:-4 = 1011+1=1100)

负偶数:例:-4(补码1100)/2=-2(补码1110),1100>>1=1110(-2的补码),结果相等

负奇数:例:-3(补码1101)/2=-1(补码1111),1101>>1=1110(-2的补码),(-1)-(-2)=1;即F-G=1.

右移和除以2不相等时:

对于正数的运算得到的结果是一样的,因为最低位被忽略,所以奇数还是偶数无关,结果相等;

对于负数,奇数结果不相等,偶数是结果相等的;而且算出来的结果必然是  F = X / 2  大于 G = (X>>1),相差也只能是1;

综述, X is negative 并且 X is odd; F-G=1.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

位于用户和操作系统之间的一层数据管理软件指的是? 

DBMS

DB是database的缩写也就是数据库
DBS是Database System的缩写也就是数据库系统
DBMS是Database Management System的缩写,它是操作数据库和管理数据库的一个系统,比如mysql、sqlserver等都是属于数据库管理软件

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如下代码的输出结果是什么?

public class Test {

    public int aMethod(){

        static int i = 0; //静态变量只能在类主体中定义,不能在方法中定义

        i++;

        return i;

    }

public static void main(String args[]){

    Test test = new Test();

    test.aMethod();

    int j = test.aMethod();

    System.out.println(j);

    }

}

编译失败:

静态变量只能在类主体中定义,不能在方法中定义

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

C++规定不能将A** 转换为const A**(在C语言中是可以的,这个缺陷被C++修正)
我们看看假如允许这种转换,将会发生什么错误
参考代码:

int main() 

{ 

    const int x = 1; 

    int* p; 

    int const** q = &p;  //① q为一个指向const int*的指针,现在将其指向non-const int*  p 

    *q = &x;             // ②现在将q指向的指针赋为常量x的地址(*q即为指针p的地址,这时p指向x)

    //**q=2;             //③报错

    *p = 2;               //④因为p是non-const int *,所以可以对其赋值,这时将常量x的值改为了2,明显不符合常识

    printf("%d",x);

}

这里的关键在于引入了中间指针p,虽然q本身被const **限制,使得*q是const* ,从而**q不能被修改(见代码④),但是(*q)如果可以是non const*的话(如我们熟悉的const int*可以被赋值为int* ),p=*q是指向non-const的,可以被修改,显然不合理。

而选项3正确的原因在于参数 const A* const*q,说明p指向一个const 指针(*q),这个const 指针再指向const对象。 const 指针本身不能被修改,所以上面代码②会 报错。即q指向A**也无影响。

参考  http://blog.csdn.net/duyiwuer2009/article/details/39401801

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

通过文件目录可以实现从文件名到文件(物理地址)的转化。
一个计算机系统中有成千上万个文件,为了便于对文件进行存取和管理,计算机系统建立文件的索引,即文件名和文件物理位置之间的映射关系,这种文件的索引称为文件目录。

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

零地址的运算类指令在指令格式中不给出操作数地址,参加运算的两个操作数来自( 堆栈的栈顶和次栈顶单元)

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

为获得下一条指令的地址, CPU 在取指后通常修改 (指令计数器的内容 ),而不是 指令寄存器的内容

(写的有点长,大家举一反三,多记一点知识吧)
  几乎所有的冯·诺伊曼型计算机的CPU,其工作都可以分为5个阶段:取指令、指令译码、执行指令、访存取数、结果写回。
  在指令执行完毕、结果数据写回之后,若无意外事件(如结果溢出等)发生,计算机就接着从程序计数器PC(Program Counter Register)中取得下一条指令地址,开始新一轮的循环,
下一个指令周期将顺序取出下一条指令。所以CPU在取出当前指令后,通常修改指令计数器,下一次就能知道执行到哪一条指令了。

寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)程序计数器(PC)

指令寄存器(instruction register)- 储存现在正在被运行的指令。

程序计数器(Program Counter Register)是一块较小的内存空间,它存储的是下一条指令所在单元的地址。

执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

X= 0.0011 , Y= - 0.1011 , [X + Y] 补 = ( 1.1000)

D。考察的是负小数补码的运算。

  • 根据题目得出 X + Y =  -0.1000
  • 求负小数-0.1000的补码过程如下:
  1. 求出原码,即负数符号位为1,其余不变得出1.1000 ;
  2. 除符号外,其余按位求反得出1.0111 ;
  3. 加1得出1.1000


 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果某系统15*4=112成立,则系统采用的是(6)进制

假设是X进制 则:(x+5)*4 = x*x +x +2

求解得:x = 6
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
有一个 lK × l 的 DRAM 芯片,芯片内是 32 × 32 结构,采用分散刷新方式,如果刷新间隔不超过 2ms ,刷新信号的周期是(62.5us)
分散刷新是指将刷新周期分散安排在存取周期中(1:1)。刷新周期是指刷新一行所需要的时间。刷新间隔不超过2ms,即需要在2ms内刷新32行,所以刷新周期= 2ms / 32 = 0.0625ms = 62.5us.
集中刷新是指集中安排所有的刷新周期,也称死区。
分布式刷新:各刷新周期分散安排在2ms内,若有M行,则每过2/M ms 发一次刷新请求,刷新一行,2ms内刷新完所有的行

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
arp协议用了(broadcast)
地址解析协议,即ARP(Address Resolution Protocol),是根据 IP地址 获取 物理地址 的一个 TCP/IP协议 。 主机 发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Linux crontab中* * * * * /usr/local/run.sh这句话5个*号分别代表什么?


简单记一波:分食日月粥(来自一个吃货的学习记录)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DOS 启动后,被装入内存的命令是 (内部命令 )
内部命令是随每次启动的COMMAND.COM装入并常驻内存,而外部命令是一条单独的可执行文件。在操作时要记住的是,内部命令在任何时候都可以使用。 外部命令需要保证命令文件在当前的目录中,或在Autoexec.bat文件已经被加载了路径。   DOS的内部命令是DOS操作的基础,DOS的外部命令就是一些应用程序,这些外部命令都是以文件的形式存在,Windows系统的DOS外部命令保存在Windows主目录下的Command目录中。 简单的说,外部命令是指在DOS目录下看的见的命令,一般是.exe或.com为扩展名,这些命令删除后就不能再用了。常用的有:format,fdisk,copy,xcopy等等。 内部命令是指集成在DOS系统中的命令,用DIR列表是看不见的,是无法删除的!在任何目录下都可以运行执行的命令。常用的有:dir,rd,cd,md等等

----------------------------------------------------------------------------------------------------------------------------------------
指针大小在32位系统为4字节,64位系统为8字节

----------------------------------------------------------------------------------------------------------------------------------------
DMA方式___不能取代中断方式___:
中断方式是在数据缓冲寄存器满之后发出中断,要求CPU进行中断处理,而DMA方式则是在所要求传送的数据块全部传送结束时要求CPU中断处理
----------------------------------------------------------------------------------------------------------------------------------------

基本块内的优化为:删除多余运算,删除无用赋值
----------------------------------------------------------------------------------------------------------------------------------------

关于现代操作系统的特征,并发性是指(并发:若干事件同一时间段运行 并行:若干事件同一时间点运行 )
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值