本帖最后由 Fighting--BJ 于 2015-7-3 06:17 编辑
10.位运算符介绍 (1)这些运算符只能用于整型操作数,即只能用于带符号或无符号的 char,short,int与long类型。
1)&按位与 口诀:同1为1
2) | 按位或 口诀:有1则1,全0为0
3) ^ 按位异或 口诀:相同为0,不同为1
4) ~ 取反 口诀:0变1,1变0
(2)<< 左移 1、各二进位全部左移n位,高位丢弃,低位补0
注意:
1)左移可能会改变一个数的正负性 2)左移1位想当于*2
2、用途:快速计算一个数乘以2的n次方 (8<<3 等同于8*2^3)
(3)>>右移 各二进位全部右移n位,保持符号位不变
1、右移不会改变一个数的符号
x 右移 n 位就相当于除以2的n次方
2、用途:快速计算一个数除以2的n次方 (8>>3等同于8/2^3)
(4)位运算技巧:
1)任何数和1进行&操作,得到这个数的最低位1001
&0001
------------
0001
2)想把某一位置0
11111111
& 11111011
------------
11111011
11.变量地址获取及存储原理
(1)获取变量地址的方法
%p 输出一个地址 定义在函数中变量我们称为局部变量
先分配字节地址大内存,然后分配字节地址小的内存
(2)变量在内存中存储的原则
低位保存在低地址字节上,高位保存在高地址字节上
12.整型变量修饰符
(1)改变整型变量所占存
short2字节 %hd
int 4字节 %d %i
long 8字节 %ld
longlong 8字节 %lld (主要是为了解决32位机器问题)
所有修饰符都是用来修整形
*long long 类型
32位系统下: long4个字节 long long 8个字节
64位系统下: long8个字节 long long 8个字节
(2)改变整型变量的符号
signed表示是有符号的(默认的就是有符号数)
unsigned表示是一个无符号的数 (正数的取值范围会扩大一倍)
13.char类型数据存储
(1)char型常量存储问题
字符型变量占一个字节,奇怪的是C语言认为'a'是4个字节,而C++语言认为'a'是1字节.
(2)存储原理
chara='a' ----->取出'a'的ASCII码值,97,然后转换2进制,存储在一个字节中
(3)注意事项
1)当把一个字符赋值给一个char类型变量,那么系统首先查这个字符所对应的ASCII码, 然后把这个ASCII值放到变量中
2)根据变量中存储的ASCII值,去查ASCII表中对应字符,然后把这个字符打印控制台上, 整形和字符型可以互相转换。
3)charz = '我'; char字节,一个中文字符占3字节(unicode表),所有char不可以存储中文
4)不支持多个字符,多个字符是字符串
|
|