<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>位运算 on Zirnc's Blog</title><link>https://blog.chungzh.cn/blog/%E4%BD%8D%E8%BF%90%E7%AE%97/</link><description>Recent content in 位运算 on Zirnc's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 21 Aug 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.chungzh.cn/blog/%E4%BD%8D%E8%BF%90%E7%AE%97/index.xml" rel="self" type="application/rss+xml"/><item><title>位运算笔记</title><link>https://blog.chungzh.cn/oi-history/bit-operation/</link><pubDate>Sun, 21 Aug 2022 00:00:00 +0000</pubDate><guid>https://blog.chungzh.cn/oi-history/bit-operation/</guid><description>基本概念 比特（bit，亦称二进制位）是指 1 位二进制的数码（0 或 1），是计算机中信息的最小单位。
字节（byte）：一个字节由 8 位组成。
熟练地运用位运算，可以提高我们程序的时空效率。
计算机中的整数存储与运算 下面以 32 位二进制数，即 C++ 中的 int 和 unsigned int 类型为例。
原码、反码 简单介绍一下：
原码：最高位为符号位，正数为 $0$，负数为 $1$，其余所有位为十进制数的绝对值。
优点：对人类而言最直观。 缺点：无法将减法转换成加法运算。如：$1-1=1+(-1)=0001+1001=1010=-2$；$0$ 有两种表示方法 $0000$ 和 $1000$。 反码：最高位为符号位，正数为 $0$，负数为 $1$。正数的反码等于本身，负数的反码除符号位外，各位取反。
优点：解决了减法运算的问题。$1-1=1+(-1)=0001+1110=1111=0$ 缺点：$0$ 有两种表示方法 $0000$ 和 $1111$；减法算法规则较复杂，需要额外判断溢出。 补码 32 位无符号整数 unsigned int： 直接把这 32 位编码 $C$ 看作 32 位二进制数 $N$。
32 位有符号整数 int： 以最高位作为符号位，$0$ 表示非负数，$1$ 表示负数。</description></item></channel></rss>