cpu如何计算1+2?

3+2=?

首先,将1,2存入到容器中

x:0010

y:0011

1.cpu首先将两个数进行异或

x^y   0010

xor 0011

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

0001

将0001 存入另一个容器R

2.cpu如何确定算完了?(为了确定R是否已经算到最后了)与运算

x&y    0010

&  0011

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

0010

然后将 0010 <<1 == 0100,如果全0,R就是结果,如果没有,将

R:0001

x=0001

y=0100;

3.重复第1步骤

0001

xor   0100

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

0101

将结果在放到R中 R:0101

4.重复第二步骤

0001

&   0100

----------

0000 ---》说明结果算到了最后,结果就是R:0101 ==5

#include<stdio.h>

int plus(int a,int b)
{
  int x,y;

  if(a==0) return b;
  if(b==0) return a;

   x=x^y;
   y=(x&y)<<1;
   return plus(x,y);
}

int main(void)
{
 printf("%d\n"plus(5,8));
 return 0;
}
时间: 2024-10-04 23:07:17

cpu如何计算1+2?的相关文章

对cpu与load的理解及线上问题处理思路解读

前言 2019双11还有不到2个月就要到来了,大家也都知道服务器在大促期间由于流量的增加势必导致机器的cpu与load变高.因此趁着这个时机正好再好好学习.巩固一下cpu和load的概念,为双11做准备的同时也是增加自己的技能储备. 不过cpu和load这块真的还是很需要积累的,我自己经验尚浅,感觉还是有许多写的不到位与不对的地方,也是希望如果有错误,大家可以帮助指正. top命令 既然说了cpu和load,那总需要监控吧,没有监控就不知道cpu和load,后面的一切也就无从谈起了. top命令

汇编笔记一【计算机数据宽度与逻辑运算】

一.进制的定义 由N个符号组成,满N则向上进位1. 二.常用的数据类型 1BYTE(字节)=8BIT(位) 1WORD(字)=2BYTE(字节)=16BIT(位) 1DWORD(双字)=2WORD(字)=4BYTE(字节)=32BIT(位) 三.二进制的逻辑运算符 A.逻辑运算符or(中文名:或运算 C对应符号:|) 定义:两个数只要有一个为1,结果就是1. 例子: B.逻辑运算符and(中文名:与运算 c对应符号:&) 定义:两个数都是1,结果才是1 例子: C.异或运算符xor(中文名:异或

linux内核调度算法(2)--CPU时间片如何分配 转!

内核在微观上,把CPU的运行时间分成许多分,然后安排给各个进程轮流运行,造成宏观上所有的进程仿佛同时在执行.双核CPU,实际上最多只能有两个进程在同时运行,大家在top.vmstat命令里看到的正在运行的进程,并不是真的在占有着CPU哈. 所以,一些设计良好的高性能进程,比如nginx,都是实际上有几颗CPU,就配几个工作进程,道理就在这.比如你的服务器有8颗CPU,那么nginx worker应当只有8个,当你多于8个时,内核可能会放超过多个nginx worker进程到1个runqueue里

为什么空循环进程会导致CPU占有率很高?

最近在写一个时间戳系统记录系统中各个模块一些重要的时间节点.获取内核上报的时间戳是通过进程轮询的方式,但是发现该进程在实际运行中CPU占用率很高,其中就是一个死循环在读取设备文件,本以为是由于读系统调用太频繁的原因. 于是又写一个测试程序,其中仅仅是个空循环.结果发现该程序的CPU占用率居然在90%多! 针对这个问题我有2个疑问,对这些疑问的理解也记录在此,与大家分享. 1 linux系统是时间片调度算法,微观上所有可运行进程都是串行,不管进程中作何操作,该进程的时间片一到就切换到下一进程,那为

CPU使用率计算

昨天接到临时任务,需要将一个工作线程执行真正工作的时机推迟到CPU空闲时执行.当时第一感觉认为是将线程优先级设置为空闲级别就行了,以为只有CPU空闲下来才会去跑这个线程,实际上应该不是,毕竟即时是空闲级别也需要排入队列,只不过优先级低而已.当然其实也不能说CPU空闲时来执行,应该说使用率比较低的时候来执行比较合适. 参考博客:http://www.cnblogs.com/TenosDoIt/p/3242910.html,描述了比较多的方法来介绍如何计算CPU使用率. 我尝试了两种方式,使用VS的

linux下C语言实现求CPU利用率

第一节   祸起 本来就是想通过写个小程序测试CPU利用率从而可以检验其他的工具性能之类的数据,后来参照IPbench中的cpu_target_lukem插件实现我们的功能,原理很简单:就是我们给程序设置了极低的优先级,如果有任何计算任务都会打断它,而如果没有计算任务,我们的程序就会占用cpu时间,所以我们的程序的运行时间基本上可以算作CPU的闲暇时间. 所以我们计算总的CPU利用率的方法就是  : CPU利用率 = 1 - 程序占用cpu时间/程序总的运行时间. 主要功能实现代码如下: [cp

根据CPU核心数确定线程池并发线程数

转载:https://blog.csdn.net/FAw67J7/article/details/79885842 目录 一.抛出问题 二.分析 三.实际应用 四.总结: 正文 回到顶部 一.抛出问题 关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下: 第一派:<Java Concurrency in Practice>即<java并发编程实践>,如下图: 如上图,在<Java Concurrency in Practice&g

linux内核调度算法(2)--CPU时间片如何分配

内核在微观上,把CPU的运行时间分成许多分,然后安排给各个进程轮流运行,造成宏观上所有的进程仿佛同时在执行.双核CPU,实际上最多只能有两个进程在同时运行,大家在top.vmstat命令里看到的正在运行的进程,并不是真的在占有着CPU哈. 所以,一些设计良好的高性能进程,比如nginx,都是实际上有几颗CPU,就配几个工作进程,道理就在这.比如你的服务器有8颗CPU,那么nginx worker应当只有8个,当你多于8个时,内核可能会放超过多个nginx worker进程到1个runqueue里

一文秒懂CPU使用率

目录 CPU:Cores, and Hyper-Threading? 超线程(Hyper-Threading?) 多核(multi-cores) CPU使用率计算 CPU使用率测试 如何计算CPU使用率 实现CPU使用率统计程序 CPU:Cores, and Hyper-Threading? 超线程(Hyper-Threading?) 超线程是Intel最早提出一项技术,最早出现在2002年的Pentium4上.单个采用超线程的CPU对于操作系统来说就像有两个逻辑CPU,为此P4处理器需要多加入