sarl

计算机系统基础学习笔记(2)-数据的位运算操作

时光毁灭记忆、已成空白 提交于 2020-04-23 18:14:15
C语言的位运算操作包括两类,逻辑运算操作和逻辑移位操作。 逻辑运算操作 C语言提供了四种按位逻辑操作符,分别是按位取反,按位与,按位或,按位异或。在编译时,编译器会根据操作数的宽度分别转换为不同的指令。 操作 C语言操作符 汇编指令 按位取反 ~ notb、notw、notl 按位与 & andb、andw、andl 按位或 l orb、orw、orl 按位异或 ^ xorb、xorw、xorl 注意: C语言的逻辑与(&&)、逻辑或(||)、逻辑非(!)并没有对应的机器指令,而是由多条指令联合来实现这些功能,完成以变量为单位的逻辑操作。 下面我们以一个简单的C语言程序test.c来了解逻辑运算操作过程。 #include <stdio.h> void main() { int a=5; unsigned int b=3; short c=5; int d=0; a = ~a; b = ~b; c = ~c; d = a&b; d = a^b; d = a|b; return; } 利用gcc命令将其进行编译成可执行文件。 gcc -o0 -m32 -g test.c -o test 利用objdump命令进行反汇编并将其重定向到test.txt文件方便查看。 objdump -S test>test.txt main函数所对应的汇编指令如下所示。 000004ed <main>: