c语言中的位运算与进制(一)

来源:互联网 发布:ai软件什么时候上市 编辑:程序博客网 时间:2024/06/03 19:48

位运算:(需转换为二进制)

左移:<<、右移:>>、按位与:&、按位或:|、按位取反:~、按位异:^

1<<16意为:16的二进制表示形式0b10000向左移一位,相当于十进制的16/2.

16>>1意为:16的二进制表示形式0b10000向右移一位,相当于十进制的16*2.

16&15意为:16的二进制表示形式0b1000015的二进制表示形式0b1111,如果同位数的值相同为1,不同为0,结果为0

16|15意为:16的二进制表示形式0b1000015的二进制表示形式0b1111,同位数只要有一个是1,那么该位就是1,同位数都是0,那么就是0,结果为0b1111131

~16意为:16的二进制表示形式0b0000 0000 0000 0000 0000 0000 0001 0000,每位都取反,结果为0b1111 1111 1111 1111 1111 1111 1110 1111-17

16^15意为:16的二进制表示形式0b1000015的二进制表示形式0b1111,同位数相同为0,不同为1,结果为0b1111131

16^3116的二进制表示形式0b1000031的二进制表示形式0b11111,结果为0b111115,发现16^15^16 = 15

 

其它运算符:

1.     sizeof:用来表示所占字节数。

sizeof使用注意:

sizeof(int)是允许的,但是sizeof int为错误写法

2.    &:取出变量的内存地址。具体用在:直接取内存地址、用到scanf时、指针等数据的隐式转换和显式转换,类型转换最好是由低到高

3.     ++aa++在运算时的区别:区别在参与运算时,++a会把自加后的值参与运算;a++则不会

4.     逻辑运算的 &&当前面一个条件不满足时,后面的不会执行;||第一个条件满足后,后面的条件也不会执行

5C语言中是用”1“”0“表示。

6、逻辑运算和位运算的区别:逻辑运算是对条件的判断;位运算是把十进制转换为二进制然后对数据进行操作

 

 

进制:

进制常用的有十进制、二进制、八进制、十六进制等。十进制的数字表示为09;二进制数字表示为01;八进制数字表示为07;十六进制表示为09af

 

C语言中各进制表示如:

int a = 6 ; //默认定义是十进制

int b = 0b1101 ; //二进制以0B0b开头

int c = 07 ; //八进制以0开头 

int d = 0x 16e ; //十六进制以0x0X开头

其中以十进制和二进制应用频率最高。

 

十进制转二进制:

1、正整数十进制转二进制:

将需要转换的正整数一直除2取余,知道为01,右下到上将余数排列即可求出这个正整数的二进制表示。计算机中int32位,其中首位0代表正整数,1代表负数

例:

15的二进制表示为0000 0000 0000 0000 0000 0000 0000 1111

2、负数十进制转二进制;

1>原码:负数取绝对值用二进制表示。

例:-17取绝对值17,表示为0000 0000 0000 0000 0000 0000 0001 0001

2>反码:得到绝对值二进制取反,例:17取反为1111 1111 1111 1111 1111 1111 1110 1110

3>补码:取反数值补1,例:-17最后得到结果 1111 1111 1111 1111 1111 1111 1110 1111

 

二进制转十进制:

从右向左用二进制的每个数乘以2的对应次方。

例:

11101二进制转十进制1*2^0+0*2^1+1*2^2+1*2^3+1*2^4=29

原创粉丝点击