#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int main()
//{
// int a = 5/2;//商2余1
// printf("a=%d\n", a);
// return 0;
//}
//移位操作符,操作对象必须是整数
//右移操作符;
//1.算术右移:右边丢弃,左边补原符号位(正数补0,负数补1),大部分情况都是算术右移
//2.逻辑右移:右边直接丢弃,左边补0
//int main()
//{
// int a = -1;
// //整数的二进制表示有三种:原码,反码,补码,正整数的原码,补码,反码相同
// //存储到内存中是补码,移位也是移动的补码
// //比如-1的原码: 10000000000000000000000000000001
// //-1的反码:符号位不变,其他位按位取反:11111111111111111111111111111110
// //补码:反码+1得到补码 11111111111111111111111111111111
// int b=a >> 1;//--右移操作符,移动的是二进制位
// //左移操作符:左边丢弃,右边补0
// printf("b=%d\n", b);
// return 0;
//}
//位操作符,操作对象必须是整数
//int main()
//{
// //&-按二进制位与
// int a = 3;
// int b = 5;
// //00000000000000000000000000000011
// //00000000000000000000000000000101
// //00000000000000000000000000000001
// //|按位或
// int c = a ^ b;
// printf("%d\n", c);
// //按位异或
// //对应的二进制位相同为0,相异为1
// return 0;
//}
//不创建临时变量交换两个数的值
//int main()
//{
// int a = 3;
// int b = 5;
// a = a ^ b;
// b = a ^ b;
// a = a ^ b;
// printf("after:a=%d b=%d\n", a, b);
// return 0;
//}
//编写一个代码,求一个整数存储在内存中二进制中1的个数
//int main()
//{
// int num = 0;
// int count = 0;
// scanf("%d",&num);
// /*while (num)
// {
// if (num % 2 == 1)
// count++;
// num = num / 2;
// }*/
// int i = 0;
// for (i = 0;i < 32;i++)
// {
// if (1 == ((num >> 1) & 1))
// count++;
// }
// printf("%d\n", count);
// return 0;
//}
//赋值操作符
//单目操作符:只有一个操作数
// !& sizeof -(负号) -- ++ *
2021-3-17c语言操作符(上)
最新推荐文章于 2023-12-22 20:02:54 发布