黑马程序猿_C语言进制与按位运算符

一.进制

1.进制的表现

十进制:0,1,2,3,4,5,6,7,8,9

八进制:0,1,2,3,4,5,6,7,10,11

二进制:0,1,01,10,11

十六进制:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,11,12,13

2.定义不同进制的表示方法

十进制:int  a = 10;

八进制:int  a = 014;

二进制:int  a = 0b1010;//或者0B1010

十六进制:int  a = 0xc;//或者0Xc

3.printf的多种格式符

%a       浮点数、十六进制数字和p-记数法
%A    浮点数、十六进制数字和p-记法
%c    一个字符
%d    有符号十进制整数 
%e    浮点数、e-记数法
%E    浮点数、E-记数法
%f    浮点数、十进制记数法  
%g     根据数值不同自动选择%f或%e.
%G     根据数值不同自动选择%f或%e.
%i        有符号十进制数(与%d相同)
%o    无符号八进制整数
%p    指针    
%s    字符串
%u    无符号十进制整数
%x    输出十六进制数字无符号十六进制整数 
%X    输出十六进制数字的无符号十六进制整数
%%    打印一个百分号
%g       没有e格式,默认6位包括小数点前面的数,
%f       没有e格式,默认6位仅只小数点后面包含6位
%e       采用e格式,默认6位为转化后的小数点后面的6位

4.二进制与十进制的互换

二进制-->十进制:110011 = 1*2^0 +1*2^1+0*2^2+0*2^3+1*2^4+1*2^5

十进制-->二进制:9 = 8 + 1 = 2^3 + 2^0 = 1001

5.int类型的类型说明符

long long int = long int  = long  8个字节  printf("%lld")  printf("%ld")

int  4个字节  printf("%d")

short int  = short 2个字节   printf("%d")

signed int = signed  有符号的整数型  

unsigned int = unsigned 无符号的整数型 最高位不作为符号位 

二.按位运算

1.按位与 &

只有两个对应二进制位均为1时,结果才为1,并且与二进制位为1做按位与运算,结果不变

1001
0101
——
0001

2.按位或 |

只要两个对应二进制位有一个为1,结果为1,否则为0

3.按位异或  ^

当两个二进制位不相同时,结果为1;相同数值异或,结果为0;与0进行异或,结果不变;a^b^a =a^a^b =b

4.按位取反 ~

按位取反运算会把数值的正负形改变

5.左移 

——高位舍弃,低位补零

左移想当与数值的乘法,a<<n = a*2^n (但有可能导致正负形改变)

6.右移

a>>n = a/2^n

三.利用按位异或交换a , b 的值

#include<stdio.h>

int main()
{

	int a = 10;
	int b = 11;
	a = a^b;
	b = a^b;
	a = a^b;
	printf("a = %d, b = %d\n",a,b);

return 0;

}
第一次a = 10^11,b = 10^11^11 = 10 ,第二次a = 10^11^10 = 11,实现互换

四.利用按位与判断奇偶性

a & 1 = = 1   奇数,因为奇数的二进制最后一位为1,与1按位与运算结果不变

a & 1  = = 0   偶数,因为偶数的二进制最后一位为0,与1按位与运算结果不变





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值