c语言中操作数右移一位,Assembly C中的按位运算
发布日期:2021-06-24 15:52:08 浏览次数:3 分类:技术文章

本文共 1021 字,大约阅读时间需要 3 分钟。

不同于某些高级语言的是,C提供了按位操作的运算符。AND运算符用二元运算符&来描述。OR运算符用二元运算符|来描述。而NOT运算符是用一元运算符~ 来描述。

C中的二元运算符<>执行移位操作。运算符<>执行右移操作。这些运算符有两个操作数。左边的操作数是需要移位的数值,右边的操作数是需要移的位数。如果需要移位的数值是无符号类

型,那么就执行了一次逻辑移位。如果需要移位的数值是有符号类型(比如:int),那么就执行了一次算术移位。下面是一些使用了这些运算符的C代码例子:

85d02fe44cc14df02d8716644cdf59c3.png

在C中使用按位运算的目的与在汇编语言中使用按位运算的目的是一样的。它们可以允许你操作数据的单个比特位,而且可以用在快速乘除法中。事实上,一个好的C编译器应该可以自动用移位来进行乘法运算如:x*= 2。

许多操作系统的API(例如:POSIX和Win32)包含了一些函数,这些函数使用的操作数含有按位编码的数据。例如:POSIX系统就为三种不同类型的用户保留了文件的权限:user (用户,owner可能是一个更好的名字),group(组用户)和others(其它用户)。每一种类型的用户可以被授予进行读,写和/或执行一个文件的权限。要改变一个文件的权限,要求C程序员进行单个的位操作。POSIX定义了几个宏来做这件事(看表3.6)。chmod函数可以用来设置文件的权限。这个函数有两个参数,一个是表示需设置的文件文件名的字符串,另外一个是为需要的权限设置了正确位的整形 。例如,下面的代码设置了这样的权限:允许文件的owner用户对文件可读可写,在group中的用户权限为可读而others用户没有权限访问。

2ff2b9668606c7b399853226a584adac.png

chmod("foo", S_IRUSR | S_IWUSR | S_IRGRP );

POSIX中stat函数可以用来得到文件的当前权限位。与chmod函数一起使用,它可以用来改变某些权限而不影响到其它权限。下面是一个移除文件的others用户的写权限和增加owner用户的读权限的例子。同时,其它权

限没有被改变。

1 struct    stat    file_stats ; /* stat()使用的结构体*/

2 stat ("foo", & file stats ); /* 读文件信息¯le stats.st mode中有权限位*/

3 chmod("foo", ( file stats .st_mode & ~S_IWOTH) | S_IRUSR);

转载地址:https://blog.csdn.net/weixin_33642922/article/details/117215818 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android自定义屏幕,Android 屏幕适配,自定义适配布局
下一篇:图片轮播c语言,IOS开发之UIScrollView实现图片轮播器的无限滚动

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月28日 19时15分34秒