黑马程序员技术交流社区

标题: 进制的基本总结学习(二) [打印本页]

作者: Fighting--BJ    时间: 2015-7-3 06:17
标题: 进制的基本总结学习(二)
本帖最后由 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)不支持多个字符,多个字符是字符串








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2