⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 siglechip_development 单片机开发资料
💻
字号:
<!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&gt;&gt;bit&amp;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&amp;~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&gt;&gt;bit&amp;0x01==1)</P>
<P>return num&amp;~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>&nbsp;</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 + -