数据代码的存储与处理移位操作
‘壹’ c语言中移位操作规则与操作对象的数据类型有关吗
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算
所以, 结论是 ,和数据类型无关, 不管你是char, int ,long, 都可以使用。
移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移有关。
如果是左移,则规定补入的数全部是0;
如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部为0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)
例如,设无符号短整型变量unsigend int a=0111(对应二进制数为0000000001001001),
则:a<<3 结果为01110(对应二进制数为0000001001001000),
a>>4 结果为04(对应二进制数为0000000000000100),
又如,设短整型变量int a=-4(对应二进制数为 1111111111111100),
则:a<<3 结果为-32(对应二进制数为1111111111100000),
a>>4 结果为-1(对应二进制数为1111111111111111),
在C中,左移是逻辑/算术左移(两者完全相同),
但是,左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位,如:
int i = 1, j = 0x80000000; //设int为32位
i = i << 33; // 33 % 32 = 1 左移1位,i变成2
j = j << 33; // 33 % 32 = 1 左移1位,j变成0,最高位被丢弃
在C中,右移是算术右移,会保持符号位不变,最左侧补入的原符号位; 右移是逻辑右移,最左侧补入的数为0
实际应用中可以根据情况用左/右移做快速的乘 /除运算,这样会比循环效率高很多.
‘贰’ 汇编寄存器中 ax 和[ax] 什么区别
1、意义不同
AX是指令中可以用的寄存器名表达式。[ax]常用于存放算术、逻辑运算中的操作数或结果。所有的I/O指令都要使用累加器与外设接口传递数据。
2、用法不同
ax寄存器使用最频繁,常用来存放参与运算的数据或是存储运算的结果。ax寄存器为16字节,可以灵活处理8位数据。
3、操作不同
操作ax的时候就是直接用ax中的值,[ax]是将ax中的值当作一个地址,然后将这个地址对应该内存中的值来操作。比如mov bx,ax是将ax中的值给bx, mov bx,[ax],是将内存中ds段ax这个偏移地址中的那个值给bx。
(2)数据代码的存储与处理移位操作扩展阅读:
通用寄存器组包括AX、BX、CX、DX4个16位寄存器,用以存放16位数据或地址。也可用作8位寄存器。用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL。
只能存放8位数据,不能存放地址。它们分别是AX、BX、CX、DX的高八位和低八位。若AX=1234H,则AH=12H,AL=34H。通用寄存器通用性强,对任何指令,它们具有相同的功能。
为了缩短指令代码的长度,在8086中,某些通用寄存器用作专门用途。例如,串指令中必须用CX寄存器作为计数寄存器,存放串的长度,这样在串操作指令中不必给定CX的寄存器号,缩短了串操作指令代码的长度。
‘叁’ 关于8086/8088汇编语言中的 移位指令
SHL SHR SAL SAR RCR指令的格式是相同的:SHL dest,count
dest为目标 就是要位移的数据 count是位移的次数
状态位cf,sf,zf,pf随运算结果变化;OF的变化如下:当COUNT=1时,若位移前后dest的最高位不同时,则OF=1,否则OF=0;当COUNT>1时,OF不确定
我给你举个例子:MOV CL,1
MOV AL,21H
SHL AL,CL
AL=21H=00100001H 由于是左移1位,那么CF=0,AL=01000010,最高位是0,没有变 就是说OF=0
‘肆’ C语言中,怎样将移位出来的数据进行存放,
左移的话,可以先将数据与0x80做&操作,就可以知道最高位是什么了,用一个变量来保存最高位即可。
右移的话,先将数据与1做&操作,获取最低位的数值。
‘伍’ 计算机组成原理结构
一、计算机的组成及学习大纲
1. 计算机的组成
计算机的三大件 :CPU、内存、主板
(1)CPU,中央处理器,计算机最核心的配件,负责所有的计算。
(2)内存,你编写的程序、运行的游戏、打开的浏览器都要加载到内存中才能运行,程序读取的数据、计算的结果也都在内存中,内存的大小决定了你能加载的东西的多少。
(3)主板,存放在内存中数据需要被CPU读取,CPU计算完成后,还要把数据写入到内存中,然而CPU不能直接插在内存上,这就需要主板出马了,主板上很多个插槽,CPU和内存都是插在主板上,主板的芯片组和总线解决了CPU和内存之间的通讯问题,芯片组控制数据传输的流转,决定数据从哪里流向哪里,总线是实际数据传输的告诉公里,总线速度决定了数据的传输速度。
(4)输入/输出设备,其实有了以上三大件之后,计算机就可以跑起来了。我们日常使用的话还需要键盘、鼠标、显示器等输入/输出设备,而很多云服务器通过SSH远程登录就可以访问,就不需要配显示器、鼠标、键盘这些东西,节省成本且方便维护。
(5)硬盘,有了硬盘数据才能长久的保存下来,大部分还会给自己的机器配上机箱和风扇,解决灰尘和散热问题,不过这些也不是必须的,用纸板和电风扇替代也一样可以用。
(6)显卡,显卡里有GPU图形处理器,主要负责图形渲染,使用图形界面操作系统的计算机,显卡是必不可少的。现在的主板都带了内置的显卡,如果想玩游戏、做图形渲染,一般需要一张单独的显卡,插在主板上。
2. 冯·诺依曼体系
现代计算机的硬件基础架构都是依赖于冯诺依曼提出的冯诺依曼体系结构,现代计算机的核心架构可以抽象为五个基础组件:运算器、控制器、存储器、输入设备和输出设备。
具体到现代计算机,运算器和控制器组成了现代计算机的CPU,存储器对应着内存和硬盘,主板控制着CPU、内存、硬盘、输出/输出设备之间的通讯。
冯诺依曼体系结构也叫做存储程序计算机,即可编程、可存储的计算机。
任何一台计算机的任何一个部件都可以归到运算器、控制器、存储器、输入设备和输出设备中,而所有的现代计算机也都是基于这个基础架构来设计开发的。
冯诺依曼体系结构确立了我们现代计算机的硬件基础架构,学习计算机组成原理,就是学习和拆解冯诺依曼体系。
‘陆’ PLC,数据处理指令里面的移位是什么意思
移位操作指令是一组经常使用的指令,属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令),双精度移位指令三大类。其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。目的操作数是8位(或16位)的寄存器数据或存储器数据。
‘柒’ c51单片机 移位操作 以下是24c64存储芯片的一段代码 请问执行0x80 & ACC后 acc 会自动带进位左移
SDA = 0x80 & ACC;
这不是移位运算,这是按位与运算;
0x80 =0B10000000 这意思知道吧?
你的运算结果是这样的:
如果ACC最高位是1,则SDA=0B10000000
否则SDA=0B00000000;
移位运算应该这样:
SDA = ACC<<1;
ACC左移一位,结果存在SDA中;
‘捌’ 处理器内部有哪些基本操作这些基本操作个包含哪些微操作
什么是cpu,cpu就是中央处理器,英文为central processing unit。cpu是电脑中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和控制核心。电脑中所有操作都由cpu负责读取指令,对指令译码并执行指令的核心部件。cpu的结构:中央处理器cpu包括运算逻辑部件、寄存器部件和控制部件。中央处理器从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码。它把指令分解成一系列的微操作,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行。指令是计算机规定执行操作的类型和操作数的基本命令。指令是由一个字节或者多个字节组成,其中包括操作码字段、一个或多个有关操作数地址的字段以及一些表征机器状态的状态字和特征码。有的指令中也直接包含操作数本身。①运算逻辑部件。可以执行定点或浮点的算术运算操作、移位操作以及逻辑操作,也可执行地址的运算和转换。②寄存器部件。包括通用寄存器、专用寄存器和控制寄存器。通用寄存器又可分定点数和浮点数两类,它们用来保存指令中的寄存器操作数和操作结果。通用寄存器是中央处理器的重要组成部分 ,大多 数 指令都要访问到通用寄存器。通用寄存器的宽度决定计算机内部的数据通路宽度,其端口数目往往可影响内部操作的并行性。专用寄存器是为了执行一些特殊操作所需用的寄存器。控制寄存器通常用来指示机器执行的状态,或者保持某些指针,有处理状态寄存器、地址转换目录的基地址寄存器、特权状态寄存器、条件码寄存器、处理异常事故寄存器以及检错寄存器等。有的时候,中央处理器cpu中还有一些缓存,用来暂时存放一些数据指令,缓存越大,说明中央处理器cpu的运算速度越快,目前市场上的中高端中央处理器cpu都有2M左右的二级缓存。③控制部件。主要负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。简单指令是由(3~5)个微操作组成,复杂指令则要由几十个微操作甚至几百个微操作组成。逻辑硬布线控制器 则完全是由随 机逻辑组成 。 指令译码后,控制器通过不同的逻辑门的组合,发出不同序列的控制时序信号,直接去执行一条指令中的各个操作。应用 大型、小型和微型计算机的中央处理器的规模和实现方式很不相同,工作速度也变化较大。中央处理器可以由几块电路块甚至由整个机架组成。如果中央处理器的电路集成在一片或少数几片大规模集成电路芯片上,则称为微处理器(见微型机)。中央处理器的工作速度与工作主频和体系结构都有关系。中央处理器的速度一般都在几个MIPS(每秒执行100万条指令)以上。有的已经达到几百 MIPS 。速度最快的中央处理器的电路已采用砷化镓工艺。在提高速度方面,流水线结构是几乎所有现代中央处理器设计中都已采用的重要措施。未来,中央处理器工作频率的提高已逐渐受到物理上的限制,而内部执行性(指利用中央处理器内部的硬件资源)的进一步改进是提高中央处理器工作速度而维持软件兼容的一个重要方向。
在那里能看到CPU的占用率?
在2000/xp/2003系统中,只需打开任务管理器(ctrl+alt+del )即可看到cpu占用率
CPU占用率过高有什么坏处?
最好不要长期停在100%,对cpu没影响,可长期温度过高,会使cpu附近主版电路和芯片因温度过高起变化,若时间过长,特别是在夏天,会对电脑造成伤害。
一般的,最好不要高温运行大型软件,避免让cpu保持高占用率,要做好散热。另外,CPU占用100也可能是中了木马,但不能凭这点去判断,还需其他特征。
‘玖’ 计算机5个组成部分各自的主要作用分别是什么
计算机的组成部分及功能
由运算器,控制器,存储器,输入装置和输出装置五大部件组成计算机,每一部件分别按要求执行特定的基本功能。
⑴ 运算器或称算术逻辑单元(Arithmetical and Logical Unit)
运算器的主要功能是对数据进行各种运算。这些运算除了常规的加、减、乘、除等基本的算术运算之外,还包括能进行“逻辑判断”的逻辑处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、移位等操作。
⑵ 存储器(Memory unit)
存储器的主要功能是存储程序和各种数据信息,并能在计算机运行过程中高速、自动地完成程序或数据的存取。存储器是具有“记忆”功能的设备,它用具有两种稳定状态的物理器件来存储信息。这些器件也称为记忆元件。由于记忆元件只有两种稳定状态,因此在计算机中采用只有两个数码“0”和“1”的二进制来表示数据。记忆元件的两种稳定状态分别表示为“0”和“1”。日常使用的十进制数必须转换成等值的二进制数才能存入存储器中。计算机中处理的各种字符,例如英文字母、运算符号等,也要转换成二进制代码才能存储和操作。
存储器是由成千上万个“存储单元”构成的,每个存储单元存放一定位数(微机上为8位)的二进制数,每个存储单元都有唯一的编号,称为存储单元的地址。“存储单元”是基本的存储单位,不同的存储单元是用不同的地址来区分的,就好像居民区的一条街道上的住户是用不同的门牌号码来区分一样。
计算机采用按地址访问的方式到存储器中存数据和取数据,即在计算机程序中,每当需要访问数据时,要向存储器送去一个地址指出数据的位置,同时发出一个“存放”命令(伴以待存放的数据),或者发出一个“取出”命令。这种按地址存储方式的特点是,只要知道了数据的地址就能直接存取。但也有缺点,即一个数据往往要占用多个存储单元,必须连续存取有关的存储单元才是一个完整的数据。
计算机在计算之前,程序和数据通过输入设备送入存储器,计算机开始工作之后,存储器还要为其它部件提供信息,也要保存中间结果和最终结果。因此,存储器的存数和取数的速度是计算机系统的一个非常重要的性能指标。
⑶ 控制器(Control Unit)
控制器是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。
控制器从存储器中逐条取出指令,分析每条指令规定的是什么操作以及所需数据的存放位置等,然后根据分析的结果向计算机其它部分发出控制信号,统一指挥整个计算机完成指令所规定的操作。因此,计算机自动工作的过程,实际上是自动执行程序的过程,而程序中的每条指令都是由控制器来分析执行的,它是计算机实现“程序控制”的主要部件。
通常把控制器与运算器合称为中央处理器(Central Processing Unit-CPU)。工业生产中总是采用最先进的超大规模集成电路技术来制造中央处理器,即 CPU 芯片。它是计算机的核心部件。它的性能,主要是工作速度和计算精度,对机器的整体性能有全面的影响。
⑷ 输入设备(Input device)
用来向计算机输入各种原始数据和程序的设备叫输入设备。输入设备把各种形式的信息,如数字、文字、图像等转换为数字形式的“编码”,即计算机能够识别的用1和0表示的二进制代码(实际上是电信号),并把它们“输入”(INPUT)到计算机内存储起来。键盘是必备的输入设备、常用的输入设备还有鼠标器、图形输入板、视频摄像机等。
⑸ 输出设备(Output device)
从计算机输出各类数据的设备叫做输出设备。输出设备把计算机加工处理的结果(仍然是数字形式的编码)变换为人或其它设备所能接收和识别的信息形式如文字、数字、图形、声音、电压等。常用的输出设备有显示器、打印机、绘图仪等。
通常把输入设备和输出设备合称为I/O设备(输入/输出设备)。
‘拾’ C语言中移位运算
右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:10100110 >>5(假设字长为8位),则得到的是 11111101。
总之,在C中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多.
所以,short a=0xf245,即a=1111001001000101,经过右移后,b=a>>8;b=1111111111110010,即b=0xfff2。注意是有符号右移为算术右移!!!