10.位运算符介绍
(1)这些运算符只能用于整型操作数,即只能用于带符号或无符号的 char,short,int与long类型。
1)&按位与 口诀:同1为12) | 按位或 口诀:有1则1,全0为03) ^ 按位异或 口诀:相同为0,不同为14) ~ 取反 口诀:0变1,1变0
(2)<< 左移 1、各二进位全部左移n位,高位丢弃,低位补0
注意:1)左移可能会改变一个数的正负性 2)左移1位想当于*22、用途:快速计算一个数乘以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------------00012)想把某一位置011111111& 11111011------------11111011
11.变量地址获取及存储原理
(1)获取变量地址的方法
%p 输出一个地址 定义在函数中变量我们称为局部变量先分配字节地址大内存,然后分配字节地址小的内存
(2)变量在内存中存储的原则
12.整型变量修饰符低位保存在低地址字节上,高位保存在高地址字节上
(1)改变整型变量所占存
short2字节 %hdint 4字节 %d %ilong 8字节 %ldlonglong 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)不支持多个字符,多个字符是字符串
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |