📄
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0037)http://go.163.com/~czlyzhj/cbitop.htm -->
<HTML><HEAD><TITLE>给C语言增加几个位操作函数</TITLE>
<META content="text/html; charset=gb_2312-80" http-equiv=Content-Type>
<META content="MSHTML 5.00.2314.1000" name=GENERATOR>
<META content=C:\MSOffice\Template\正常文档.dot name=Template></HEAD>
<BODY bgColor=#cccccc><B>
<P align=center><FONT face=黑体 lang=ZH-CN size=4>给</FONT><FONT face=Arial
size=4>C</FONT><FONT face=黑体 lang=ZH-CN size=4>语言增加几个位操作函数</FONT></P></B>
<P><FONT face=宋体 lang=ZH-CN
size=3>在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在</FONT><FONT face=Arial
size=3>C</FONT><FONT face=宋体 lang=ZH-CN
size=3>语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要对具体的一位操作,仍旧不方便,以下给出了一些函数,可以模仿汇编语言的一些位操作功能。</FONT></P><FONT
size=3>
<P>#define uchar unsigned char</P></FONT>
<P><FONT size=3>/*</FONT><FONT face=宋体 lang=ZH-CN size=3>测试变量某一位是否为‘</FONT><FONT
size=3>1</FONT><FONT face=宋体 lang=ZH-CN size=3>’,是返回真,否返回假,</FONT><FONT
size=3>num</FONT><FONT face=宋体 lang=ZH-CN size=3>为待测试的数,</FONT><FONT
size=3>bit</FONT><FONT face=宋体 lang=ZH-CN size=3>为位数,其值从</FONT><FONT
size=3>0</FONT><FONT face=宋体 lang=ZH-CN size=3>到</FONT><FONT
size=3>7</FONT><FONT face=宋体 lang=ZH-CN size=3>,下同</FONT><FONT
size=3>*/</FONT></P><FONT size=3>
<P>uchar bittest(uchar num,uchar bit) </P>
<P>{ if(num>>bit&0x01==1)</P>
<P>return 1;</P>
<P>else</P>
<P>return 0;</P>
<P>}</P></FONT>
<P><FONT size=3>uchar bitclr(uchar num,uchar bit) /*</FONT><FONT face=宋体
lang=ZH-CN size=3>清除某一位</FONT><FONT size=3>*/</FONT></P><FONT size=3>
<P>{</P>
<P>uchar bit_value[]={1,2,4,8,16,32,64,128};</P>
<P>return num&~bit_value[bit];</P>
<P>}</P></FONT>
<P><FONT size=3>uchar bitset(uchar num,uchar bit) /*</FONT><FONT face=宋体
lang=ZH-CN size=3>设置某一位</FONT><FONT size=3>*/</FONT></P><FONT size=3>
<P>{</P>
<P>uchar bit_value[]={1,2,4,8,16,32,64,128};</P>
<P>return num|bit_value[bit];</P>
<P>}</P></FONT>
<P><FONT size=3>uchar bitcpl(uchar num,uchar bit) /*</FONT><FONT face=宋体
lang=ZH-CN size=3>取反某一位</FONT><FONT size=3>*/</FONT></P><FONT size=3>
<P>{</P>
<P>uchar bit_value[]={1,2,4,8,16,32,64,128};</P>
<P>if(num>>bit&0x01==1)</P>
<P>return num&~bit_value[bit];</P>
<P>else</P>
<P>return num|bit_value[bit];</P>
<P>}</P></FONT>
<P><FONT size=3>/*</FONT><FONT face=宋体 lang=ZH-CN
size=3>以下主程序演示,调用时,可以直接给出数值,也可以给出变量名</FONT><FONT size=3>*/</FONT></P><FONT
size=3>
<P>void main(void)</P>
<P>{</P>
<P>uchar xx=0xfe;</P>
<P>xx=bitset(xx,0);</P>
<P>printf("The set out is %x\n",xx);</P>
<P>printf("The clr out is %x\n",bitclr(255,0));</P>
<P>printf("The test out is %x\n",bittest(0xff,0));</P>
<P>printf("The cpl out is %x\n",bitcpl(0x00,7));</P>
<P>}</P>
<P>以上是以TC为例编写的主程序,各函数在其它C语言中也一样可用。</P></FONT><FONT face=楷体_GB2312 lang=ZH-CN
size=4>
<P align=right> </P></FONT>
<DIV align=center><FONT face=宋体 lang=ZH-CN><A
href="http://go.163.com/~czlyzhj/fxzl.htm"><IMG border=0 height=55
src="给C语言增加几个位操作函数.files/back1.gif" width=43></A></FONT> </DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -