<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Cs-Basics on pemako</title>
    <link>http://pemako.cn/tags/cs-basics/</link>
    <description>Recent content in Cs-Basics on pemako</description>
    <image>
      <title>pemako</title>
      <url>http://pemako.cn/images/papermod-cover.png</url>
      <link>http://pemako.cn/images/papermod-cover.png</link>
    </image>
    <generator>Hugo -- 0.146.6</generator>
    <language>en</language>
    <lastBuildDate>Thu, 09 Apr 2026 20:00:00 +0800</lastBuildDate>
    <atom:link href="http://pemako.cn/tags/cs-basics/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>位掩码</title>
      <link>http://pemako.cn/posts/bitmask/</link>
      <pubDate>Thu, 09 Apr 2026 20:00:00 +0800</pubDate>
      <guid>http://pemako.cn/posts/bitmask/</guid>
      <description>&lt;p&gt;位掩码（BitMask）是 “位” (Bit) 和 “掩码” (Mask) 的组合词。“位”指代着二进制数据当中的二进制位，而“掩码”指的是一串用于目标数据进行按位操作的二进制数字。组合起来就是“用一串二进制数字（掩码）去操作另一串二进制数字”的意思。&lt;/p&gt;
&lt;p&gt;掩码就是一串二进制代码对目标字段进行&lt;code&gt;位与&lt;/code&gt;运算，屏蔽当前的输入位，最终得到一个合理的需求。&lt;/p&gt;
&lt;h3 id=&#34;场景应用&#34;&gt;场景应用&lt;/h3&gt;
&lt;h4 id=&#34;权限&#34;&gt;权限&lt;/h4&gt;
&lt;p&gt;假设系统中有4中权限: 增删改查，使用位运算来表示权限，定义四个变量如下&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Insert = 1 // 0001
Delete = 2 // 0010
Update = 4 // 0100
Select = 8 // 1000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;假设初始权限为 &lt;code&gt;0000&lt;/code&gt; 如果想给用户增加权限，则使用 &lt;code&gt;|&lt;/code&gt; 或运算&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;给用户增加 Insert 权限  &lt;code&gt;0000 | 0001 = 0001&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;给用户同时增加 Insert 和 Delete 权限 &lt;code&gt;0000 | 0001 | 0010 = 0011&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;此时获取到的 &lt;code&gt;0011&lt;/code&gt; 十进制为 &lt;code&gt;3&lt;/code&gt; 则怎么知道用户拥有哪些权限呢？ 只需要采用 &lt;code&gt;&amp;amp;&lt;/code&gt; 运算&lt;/li&gt;
&lt;li&gt;是否有 Insert 权限 &lt;code&gt;b0011 &amp;amp; b0001 = b0001 = 1&lt;/code&gt; 有权限&lt;/li&gt;
&lt;li&gt;是否有 Delete 权限 &lt;code&gt;b0011 &amp;amp; b0010 = b0010 = 2&lt;/code&gt; 有权限&lt;/li&gt;
&lt;li&gt;是否有 Update 权限 &lt;code&gt;b0011 &amp;amp; b0100 = b0000 = 0&lt;/code&gt; 无权限&lt;/li&gt;
&lt;li&gt;是否有 Select 权限 &lt;code&gt;b0011 &amp;amp; b1000 = b0000 = 0&lt;/code&gt; 无权限&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;删除权限 如用户有 Insert 和 Delete 权限，现在需要删除 Insert 权限&lt;/p&gt;</description>
    </item>
    <item>
      <title>字符编码</title>
      <link>http://pemako.cn/posts/character-encoding/</link>
      <pubDate>Thu, 09 Apr 2026 20:00:00 +0800</pubDate>
      <guid>http://pemako.cn/posts/character-encoding/</guid>
      <description>&lt;h3 id=&#34;1-字节&#34;&gt;1. 字节&lt;/h3&gt;
&lt;p&gt;字节是计算机中存储数据的最小单元，一个字节有 &lt;code&gt;8&lt;/code&gt; 个位（即二进制位，也叫 &lt;code&gt;bit&lt;/code&gt;），也可以表示 &lt;code&gt;0~255&lt;/code&gt; 之间的任何一个数（即二进制的 &lt;code&gt;0000 0000&lt;/code&gt; 到 &lt;code&gt;1111 1111&lt;/code&gt; 之间）。可以用字节表示任何东西，如数字、字符、图像、音乐等，这取决于你如何解释这个字节。&lt;/p&gt;
&lt;h3 id=&#34;2-ascii-字符集&#34;&gt;2. ASCII 字符集&lt;/h3&gt;
&lt;p&gt;在标准 ASCII 码中，用一个字节来表示不同的字符，字节的最高位（也就是二进制代码的左边第一位）被用来做奇偶校验，所以只剩下 7 个位用来表示不同的字符，这样能表示的字符范围就变成了 &lt;code&gt;0～127&lt;/code&gt; 之间。其中 &lt;code&gt;0～31&lt;/code&gt;、&lt;code&gt;127&lt;/code&gt; 这些数值被定义为控制字符，他们是不能显示的。&lt;code&gt;32～126&lt;/code&gt; 这些数值被定义为下面的字符：&lt;/p&gt;
&lt;p&gt;!&amp;quot;#$%&amp;amp;&amp;rsquo;()*+,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy&lt;/p&gt;
&lt;p&gt;如果要在计算机中存储 ASCII 字符串，只需要将这些字符所对应的数值（用来表示字符的数值也叫做码点）按字节依次存放即可，读取的时候也只要按字节依次读出即可。ASCII 字符集无法表示汉字。&lt;/p&gt;
&lt;h3 id=&#34;3-latin1-字符集&#34;&gt;3. Latin1 字符集&lt;/h3&gt;
&lt;p&gt;如果将标准 ASCII 码的最高位不用作奇偶校验，而也用来表示字符的话，那么就可以表示 256 个字符，在 ASCII 的基础上多出了 128 个字符，这个字符集叫做 Latin1 字符集，Latin1 是 ISO-8859-1 的别名，也可写作 Latin-1。其中 0～127 这些数值的定义与 ASCII 字符集一样，128～159 这些数值被定义为控制字符，160～255 这些数值被定义为下面的字符：&lt;/p&gt;
&lt;p&gt;¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ&lt;/p&gt;
&lt;p&gt;如果要在计算机中存储 Latin1 字符串，只需要将这些字符所对应的码点（码点就是字符所对应的数值）按字节依次存放即可，读取的时候也只要按字节依次读出即可。Latin1 字符集无法表示汉字。&lt;/p&gt;
&lt;h3 id=&#34;4-ansi-字符集&#34;&gt;4. ANSI 字符集&lt;/h3&gt;
&lt;p&gt;由于 ASCII 字符集或 Latin1 字符集只能表示有限的字符，对于亚洲字符（例如中文、日文、韩文）则无法表示，所以为了使计算机支持更多语言，出现了 ANSI 字符集，ANSI 字符集中 0～127 这些数值的定义与 ASCII 字符集一样，而 128～255 这些数值被定义为双字节字符的一个编码，即“用其中的 2 个数值来表示 1 个字符”，这样的双字节可以表示的字符数量就达到了 1.6 万多个。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
