小蜗牛 发表于 2025-5-5 03:53:12

【文档教程】位运算

本帖最后由 小蜗牛 于 2025-5-5 05:25 编辑

1字节有8bit (字节<byte>)
无符号:0~255, 有符号:-128~127

2字节有16bit (短整数<short>, 火山视窗字符<wchar_t>)
无符号:0~65535, 有符号:-32768~32767

4字节有32bit (整数<int>, 单精度小数<float>, 逻辑型<bool>)
无符号:0~4294967295, 有符号:-2,147,483,648~2,147,483,647

8字节有64bit (长整数<long>, 双精度小数<double>)
无符号:0~18,446,744,073,709,551,615, 有符号:-9,223,372,036,854,775,808~9,223,372,036,854,775,807



从左到右,由低到高


~ 位取反(100)
返回x: 11011001111111111111111111111111 // -101
参数1: 00100110000000000000000000000000 // 100
说明: 逻辑取反, 0改成1,1改成0


| 位或(2148, 32)
返回x: 00100110000100000000000000000001 // -2147481500
参数1: 00100110000100000000000000000000 // 2148
参数2: 00100110000000000000000000000001 // 32
说明: 两个参数中,只要有任何一个bit为1,那么就填充1,否则为0

& 位与(2148, -2147483548)
返回x: 00100110000000000000000000000000 // 100
参数1: 00100110000100000000000000000000 // 2148
参数2: 00100110000000000000000000000001 // -2147483548
说明: 两个参数的同位bit,都必须为1,则填充1,否则填充0

>> 位右移 (100, 1)
返回x: 01001100000000000000000000000000 // 50
参数1: 00100110000000000000000000000000 // 100
参数2: 10000000000000000000000000000000 // 1
说明: 向右移动指定位数,低位丢弃,高位补零。

<< 位左移 (100, 1)
返回x: 00010011000000000000000000000000 // 200
参数1: 00100110000000000000000000000000 // 100
参数2: 10000000000000000000000000000000 // 1
说明: 向左移动指定位数低位补零,高位溢出丢弃。

^ 位异或 (100, 1)
返回x: 10100110000000000000000000000000 // 101
参数1: 00100110000000000000000000000000 // 100
参数2: 10000000000000000000000000000000 // 1
说明: 位值相同则填充0,不同则填充1






















2oon 发表于 2025-5-5 06:46:58

谢谢分享!涨知识了

2767944492 发表于 2025-5-5 16:18:28

感谢科普
页: [1]
查看完整版本: 【文档教程】位运算