C语言位或,c语言个位,一篇带你了解C语言--位操作详情

C语言位或,c语言个位,一篇带你了解C语言--位操作详情

本文主要介绍一个简单的C语言位运算的例子,通过示例代码非常详细的介绍。对大家的学习或工作都有一定的参考价值。有需要的朋友下面和边肖一起学习。

目录

二进制数、位和字节二进制整数有符号整数二进制浮点八进制和十六进制C位运算符按位逻辑运算符二进制求反或按位求反:~按位and:按位OR: |按位XOR:用法:掩码用法:开放位(Set位)用法:关闭位(Clear位)用法:Switch位用法因为C可以在提供高级语言便利的同时工作在为汇编语言保留的级别,

二进制数、位和字节

我们日常生活中常用的十进制。

例如,数字1234可以写成:

1 *10e3 2 * 10e2 3 * 10e1 4 * 10e0

这种方法是以10的幂为基数的,所以叫做以10为基数的写法。

那么以2为基数表示的数就是二进制数。

例如,二进制数1111

1 * 2e3 1 * 2e2 1 * 2e1 1 * 2

转换成十进制是:

1* 8 1* 4 1*2 1=15

二进制整数

c语言以字节表示存储系统字符集所需的大小,通常1字节就是8位。

这8位可以从左到右编号为7~0。在一个字节中,编号为7的位称为高阶位,编号为0的位称为低阶位,每个位的编号对应2的对应指数。

该字节可以表示的最大数值是将所有位设置为1: 1111 1111,值为255。最小值为:0000000,其值为0。

因此,一个字节可以存储从0到255的256个数值,相当于ASCII码中的256个状态。

1字节无符号字符的范围是0~255,1字节有符号字符的范围是-128 ~ 127。

有符号整数

表示有符号数最简单的方法是用1位(高阶位)存储符号,剩下的7位表示数。

用这个符号表示,1000 0001代表-1,0000 0001代表1。其范围为-127~127。这种方法的缺点是有两个0和-0,有点浪费。

二进制补码法避免了这个问题。以一个字节为例:

二进制补码用1个字节的后7位表示0~127,高位设置为0。如果高位为1,则表示负数。假设一个值位组合是:1000 0000,无符号字节代表128,有符号字节代表-128。

获得二进制补数的倒数的最简单方法是反转每个位,然后加1。

是0000 0001,-1是1111 1101,或1111 1111。

二进制浮点数介绍

一个普通的十进制浮点数可以这样表示

0.234=2 /10 3/100 4/1000

从左到右,每个分母都是10的递增幂。

然后在二进制浮点数中,用2的幂作为分母,比如

.1011=1/2 0/4 1/8 1/16

八进制和十六进制

八进制以8为基数,数字用0~7表示。十六进制以16为基数,数字用0 ~15表示。但是没有一个单一的数字来表示10 ~ 15,所以用字母A ~F F表示。

3位二进制对应于1位八进制。

4位二进制对应1位十六进制。

C按位运算符

c提供按位逻辑运算符和移位运算符。

按位逻辑运算符

所有四个按位逻辑运算符都用于形成数据,包括char。

二进制反码或按位取反:~

一元运算符将1更改为0,将0更改为1。示例:

~(0001 1100)//表达式

(1110 0011)//结果值

请注意,该操作符不会更改前面变量的值,但会创建一个可以使用或赋值的新值。

按位与:

二元运算符通过逐位比较两个操作数来生成一个新值。

对于每个位,当两个操作数中对应的位为1时,结果为1。示例:

(1001 1001) (0011 1100)

//结果是

(0001 1000)

c #有一个运算符,它与and赋值进行按位组合:=

val=0247

等于

val=val 0247

按位或:|

二元运算符|,对于每一位,如果两个操作数中对应的位为1,则结果为1。

示例:

(1001 1001) | (0111 0010)

结果为

(1111 1011)

c也有这样的运算符:|=

按位异或:^

二元运算符,对于每一位,如果两个操作数中对应的位有一位为1,但不是两个都为1,则结果为1。

示例:

(1100 0001) ^ (0101 1011)

结果为

(1001 1010)

c也有这样的运算符:=

用法:掩码

掩码是指设置为开(1)或关(0)的一些位组合。

假设符号常量掩码定义为2,即(0000 0010),那么语句

val=掩码

也就是说,val中除位1以外的所有位都设置为与位01相同的值。这个过程被称为使用掩模。掩码中的0隐藏val中的其他位。

插图:

用法:打开位(设置位)

有时需要打开一个值中的特定位,而其他位保持不变。

val |=MASK

将val的位1设为1,其他位保持不变。

由于|运算符的存在,任何位与0组合都会产生自身,任何位与1组合都会产生1。

用法:关闭位(清空位)

类似于open,有时需要在不影响其他位的情况下关闭指定位。

假设要关闭变量val中的位1,只有MASK的位1为1。即:

val=val ~ MASK

由于MASK除了位1都是0,那么~MASK除了位1都是1。同样,位和1的任何组合都是它本身,所以这个语句保持除位1以外的所有位不变。

示例:

瓦尔^=面具;

(0000 1111) ^ (1011 0110)

结果为

(10111001)

用法:切换位

它是指打开关闭的位或关闭打开的位。您可以使用按位XOR运算符()来交换位。

if((值掩码)==掩码)

printf(' . '));

在val中,对应于掩码为1的位的位被交换,对应于掩码为0的位不变。

用法:检查位的值

如果检查val的某个位是否为1,可以设置一个掩码,这个位为1。

如果第二位被勾选,即:

面具(0000 0010)

程序可以这样写:

if((值掩码)==掩码)

printf(' . '));

为了避免信息越过边界泄漏,掩码应该至少与它覆盖的值一样宽。

移位运算符

左移:

左移运算符将左操作数的每一位的值向左移动右操作数指定的位数。移出左端位的左操作数的值丢失,空位置用0填充。

示例:

(1000 0110) 2

结果为

(0001 1000)

您可以使用左移赋值运算符(=)来更改变量的值。

int val=1;//0000 0001

val=2;

结果为

0000 0100

右移:

右移位运算符将左操作数的每一位的值向右移位右操作数指定的位数。

对于无符号类型,用0填充空位;对于有符号类型,结果取决于机器。

示例:=

int val=16//0001 0000

val=3;

结果是:

0000 0010

总结

本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: