操作符超详解(下)

1、移位操作符:<<、>>

2、位操作符:&、|、~、^

3、单目操作符:*、~、&

4、下标引用操作符:[ ]

5、函数调用操作符:()

6、结构体访问操作符:   .    ->

一、简单概述

        在介绍下篇操作符之前我先介绍一下,其中,移位操作符、位操作符的使用是在整形变量里,而整形数据存放内存中其实存放的是补码,所以开篇我会介绍一下二进制里的原码、反码、补码的基础概念,解引用操作符(*)和,取地址操作符(&),涉及指针的运用,下标引用操作符涉及数组。

二、原码,反码,补码

2.1进制转换

  怎么获取,原码,将十进制数转化位二进制数所获得的即是原码,最高位为符号位,主要转换方式:

除2取余法:将一位十进制数除2,记录余数,再将商除2,记录余数,如此循环反复,直到到商为0时停止,然后对余数逆序排序,最后记录的余数做二进制个位......第一次记录的余数做最后一位

  如下,将一个十进制13转换为二进制数

  13 / 2 = 6 ---1

  6 / 2 = 3 ---0

  3 / 2 = 1 --- 1

  1 / 2 = 0 --- 1

        按照上述,最后转换所得的二进制数为:1101

  知道了如何将十进制转换为二进制,那反过来说怎么将二进制数转换为十进制数?

权重累加法:从二级制的最低位开始,每一位乘上它的权重(2的幂次,从0开始,每向前进一位,次数加一位),然后累加它们的结果。

  如下是,将一个二进制数1101转换为十进制

1101从最低位开始,

  1 * 2 ^ 0 = 1

  0 * 2 ^ 1 = 0

  1 * 2 ^ 2 = 4

  1 * 2 ^ 3 = 8

  最终转换后的十进制数位:8+4+0+1 = 13

2.2原反补三码

       有了如何对进制转换的基础理解后,接下来开始是正式介绍原反补三码

      整数的二进制表现方式有三种,分别是原码,反码,补码。整数在三码里分为两部分:符号位数值位。

      符号位的的表达方式:0表示正数,1表示为负数

      整数的原码,反码,补码均相同。 如一个整数10的二进制表现

        原码:0000 1010

        反码:0000 1010

        补码:0000 1010

      负数的原码,反码,补码均不相同。如一个负数10的二进制表现

        原码:1000 1010

        反码:1111 0101

        补码:1111 0110

  原码:直接将数值按照正负数的形式转换位二进制所得就是原码。

  反码:再原码的基础上按照数值位按位取反。

  补码:反码+1(二进制)得到的就是补码

三、移位操作符

  移位操作符:<<、>>,顾名思义它们是在位置上进行移动,移动的是数值存放在内存里的二进制数,我们知道一个整形在空间里所占4的字节的大小,而八个比特位又等于一个字节,所以一共有32个比特位,一个比特位用来存放一个二进制数,例如,整形10在内存里的存储形式:

  再强调一次,最高位是它的符号位,整数在的二进制里的原码、反码,补码均相同,所以上述位10进制的补码。

  3.1 左移操作符

  <<  左移操作符,将整形10的补码向左移动一位

int a = 10;
int b = a << 1;

  这里就代表着a的补码向左移动移动了一位,若操作符右边的整数是2,3,那补码

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值