计算机系统
汇编入门80386通用寄存器 %ax :accumulate 累加寄存器 %bx :base 基址寄存器 %cx :count 计数寄存器 %dx :divide 放除法的商和余数 %eax : extend 扩展 表示32位的寄存器%eax表示32位寄存器,%ax表示低16位,在低16位的寄存器中:%ah表示高八位,%al表示第八位 汇编指令1005.s 立即数寻址movl $8,%eax; $是立即数,表示8 movl是移动的意思,将8赋值给%eax;最终的运行结果如下 1006.s 寄存器寻址 movl 用于传送32位的长子值 movw 用于传送16位的子值 movb 用于传送8位的子值不能把movw的w改为l,因为%bx是16位的寄存器,如果改为l试图把32位的传给16位是错误的。可以写mov / movw命令为 movw $0x5678,%dx ; 意思是传16个字节(w)的数据到寄存器dx里,结果如我们所愿,如果用%dh/%dl便会报错,因为%dh/%dl是8位的寄存器;同样,也不能movw...
算法(一)
算法汇总介绍常用的算法 二分查找有三个关键量,right、left、middle;middle = (right - left)>>1,其中>>为右移运算符,将right - left结果的二进制位向右移一位,>>n右移n位,举个例子 8 - 4 = 4,4的二进制位为0100,右移一位变为0010,代表十进制2。 7 - 2 = 5,5的二进制位为0101,右移一位变为0010,代表十进制2。可以看出,右移运算符的作用是将两数相减并向下取整得到结果为什么要用右移运算符而不用/2? 右移运算 >> 通常比除法 / 更快,因为位运算是底层硬件直接支持的。 1234567891011121314151617int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; while (right...
C++Practise
基本语法auto:在C++中,auto可以自动推导类型。12345#include <vector>std::vector <int> v;//有两种方式可以遍历STL容器- for (std::vector::iterator it = v.begin();it!=v.end();it++)- for (auto vtest : v) &为引用,加&与否取决于是否要修改原值或避免拷贝 需要修改并输出修改后的值 123456789101112131415#include <iostream>#include <vector>std::vector <int> v{0,1,2,3,4,5};int main(){ for (auto &v1:v) { v1 = v1+1; } for (auto v1:v) { std::cout<<v1<<std::endl; }}...
Thread2
互斥量互斥量解决多线程数据共享问题当多线程去共享同一个数据的时候,会造成争夺 12345678910111213141516171819#include <iostream>#include <thread>int a = 0;void func() { for (int i = 0; i < 10000; i++) { a += 1; }}int main() { std::thread t1(func); std::thread t2(func); t1.join(); t2.join(); std::cout << a << std::endl; system("pause"); return...
Thread
C++11多线程编程 进程与线程 进程就是正在运行的程序 线程就是进程中的进程 多线程可以提高效率。 线程的多少取决于CPU的核数如下图,如果是串行的话就必须顺序执行,但如果并行的话你就可以在同一时间内干多个事情。但同时要注意你的“核数”,你不能同时刷抖音和听音乐,因为你没有四个耳朵,亦或者说你的手机同一时间内只能处理一个应用播放声音。 C++11 Thread 准备工具 Visual Studio 线程库 thread 12#include <iostream>#include <thread> 使用thread创建一个线程123456789void PrintHelloWorld(){ std::cout<<"HelloWorld"<<std::endl;}int main(){ std::thread thread1(PrintHelloWorld); return...
第一篇文章!
汇编语言(一)CPU的组成 运算器进行信息处理; 寄存器进行信息存储; 控制器协调各种器件进行工作; 内部总线实现CPU内各个器件之间的联系。 [{"url":"1.png","alt":"img","title":""}] 8086上一代CPU的寄存器是八位的,那如何保证兼容性呢?把16位寄存器分成AH和AL两个独立的8位寄存器使用;同样,32位或64位的寄存器也可以分,从而实现兼容性。比如AX中现在存储0101010110101010,可以分为AH01010101和AL10101010来存储 汇编指令汇编指令 控制CPU完成的操作 mov ax,18 将18送入AX mov ah,78 将78送入AH add ax,8 将AX中的值和8相加并把值存入AX mov ax,bx 将BX中的值赋值给AX add ax,bx ...