基础类型、位运算

一、基本类型

一个32位的signed int类型整数表示的范围:-2^31~2^31-1

一个32位的unsigned int类型整数表示的范围: 0~2^32-1 (特别无语、一直没搞明白。。。总是不对)

一个8位的signed char类型整数表示的范围:-2^7~2^7-1

一个8位的unsigned char类型整数表示的范围: 0~2^8-1

win10程序员计算器中HEX、DEC、OCT和BIN的含义:
HEX,Hexadecimal ,十六进制。
DEC,Decimal ,十进制。
OCT,Octal ,八进制。
BIN,Binary ,二进制。

INT_MAX:2^31-1 int占4个字节 32位二进制
32位第一位代表符号位
1111 1111 1111 1111 = 2^16(有多少连续1,幂就是多少) -1 = 65535
0111 1111 1111 1111 1111 1111 1111 1111 = 2^31-1=2147483647 10位数
1000 0000 0000 0000 0000 0000 0000 0000 = -2^31=-2147483648
1111 1111 1111 1111 1111 1111 1111 1111 = -1
0000 0000 0000 0000 0000 0000 0000 0000 = 0


二、位运算

1<<21的二进制是00000001<<”意思是将二进制编码向左移动2位并将空位补0,即00000001转化为00000100=4。
同理,“1>>n”为将二进制码向右移动n位。
1<<i:是将1左移i位,即第i位为1,其余位为0;

n&(1<<i):
是将左移i位的1与n进行按位与,即为保留n的第i位,其余位置零。
如果n第i位为0,则n&(1<<i)的值为0。否则不为0。
常用if(n&(1<<i)==0)用于判断n的第i位是否为00&0=0;  0&1=0;  1&0=0;  1&1=1;
1、按位与运算符(&):0&0=00&1=01&0=01&1=1;
2、按位或运算符(|):0|0=00|1=11|0=11|1=13、取反运算符(~):~1=0~0=14、异或运算符(^):相同为0,相异为1
0^0=00^1=11^0=11^1=0&=例:a&=b相当于a=a & b、|=例:a|=b相当于a=a|b
>>=例:a>>=b相当于a=a>>b、<<=例:a<<=b相当于a=a<<b
^=例:a^=b相当于a=a^b

在这里插入图片描述

x &= x-1 可以将x的二进制中的 最低位的10;x=x&(x−1)
__builtin_popcount() 返回二进制中1的个数
int d= x&(−x) 可以获得 x的二进制表示中的最低位的1的位置
int k= __builtin_ctz(d) 返回二进制末尾后0的个数

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LIZHUOLONG1/article/details/130218845