<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>inasayang&#39;s blog</title>
    <link>/</link>
    <description>Recent blog posts on inasayang&#39;s blog</description>
    
    <generator>Hugo (https://gohugo.io)</generator>
    
    <language>zh-cn</language>
    
    <managingEditor>xiayangzzw@gmail.com (inasayang)</managingEditor>
    
    <webMaster>xiayangzzw@gmail.com (inasayang)</webMaster>
    
    <lastBuildDate>Sat, 09 Mar 2024 00:00:00 Z</lastBuildDate>
    
    <atom:link href="/tags/bitwise/index.xml" rel="self" type="application/rss+xml" />
    

    <item>
      <title>Go | 检测当前系统位数</title>
      <link>/posts/240309_gocheckosbits/</link>
      <pubDate>Sat, 09 Mar 2024 00:00:00 Z</pubDate>
      
      <author>xiayangzzw@gmail.com (inasayang)</author>

      
      
      
      

      <description>
      
      </description>
      <content:encoded>&lt;h2 id=&#34;声明一个常量来表示当前操作系统的位数&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#%e5%a3%b0%e6%98%8e%e4%b8%80%e4%b8%aa%e5%b8%b8%e9%87%8f%e6%9d%a5%e8%a1%a8%e7%a4%ba%e5%bd%93%e5%89%8d%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%9a%84%e4%bd%8d%e6%95%b0&#34;&gt;
        #
    &lt;/a&gt;
    声明一个常量来表示当前操作系统的位数
&lt;/div&gt;
&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e78284&#34;&gt;const&lt;/span&gt; NativeWordBits = &lt;span style=&#34;color:#ef9f76&#34;&gt;32&lt;/span&gt; &lt;span style=&#34;color:#99d1db;font-weight:bold&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; (^&lt;span style=&#34;color:#99d1db&#34;&gt;uint&lt;/span&gt;(&lt;span style=&#34;color:#ef9f76&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color:#99d1db;font-weight:bold&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ef9f76&#34;&gt;63&lt;/span&gt;) &lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;// 64 or 32 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;^uint(0)&lt;/code&gt;：对于无符号整型 uint(0)（其所有位都是0），按位取反操作会产生一个所有位都是1的数字。这个结果的数值上等同于 uint 能表示的最大值。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;gt;&amp;gt; 63&lt;/code&gt;：这个操作的结果依赖于 uint 的大小：
&lt;ul&gt;
&lt;li&gt;在64位平台上，uint 类型为64位，&lt;code&gt;^uint(0)&lt;/code&gt; 产生一个所有位都为1的64位数字。向右移动63位后，最左边的一位（最高位）会移动到最右边，结果为1（二进制的000&amp;hellip;001）&lt;/li&gt;
&lt;li&gt;在32位平台上，尽管仍然执行相同的操作，但是由于 uint 的大小只有32位，所以这个操作实际上产生的结果是 0，因为32位无法表示一个向右移动了63位的值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;32 &amp;lt;&amp;lt; (... &amp;gt;&amp;gt; 63)&lt;/code&gt;：最终这个表达式将32左移上一步的结果。在32位平台上，由于上一步的结果是 0，&lt;code&gt;32 &amp;lt;&amp;lt; 0&lt;/code&gt; 保持不变，仍然是 32。这反映了32位系统的字长。在64位平台上，上一步的结果是 1，因此 &lt;code&gt;32 &amp;lt;&amp;lt; 1&lt;/code&gt; 相当于将32乘以2，结果是 64。这反映了64位系统的字长。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;检查当前操作系统是32位的还是64位的&#34; &gt;
&lt;div&gt;
    &lt;a href=&#34;#%e6%a3%80%e6%9f%a5%e5%bd%93%e5%89%8d%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e6%98%af32%e4%bd%8d%e7%9a%84%e8%bf%98%e6%98%af64%e4%bd%8d%e7%9a%84&#34;&gt;
        #
    &lt;/a&gt;
    检查当前操作系统是32位的还是64位的
&lt;/div&gt;
&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e78284&#34;&gt;const&lt;/span&gt; Is64bitOS = ^&lt;span style=&#34;color:#99d1db&#34;&gt;uint&lt;/span&gt;(&lt;span style=&#34;color:#ef9f76&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color:#99d1db;font-weight:bold&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ef9f76&#34;&gt;63&lt;/span&gt; &lt;span style=&#34;color:#99d1db;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ef9f76&#34;&gt;0&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e78284&#34;&gt;const&lt;/span&gt; Is32bitOS = ^&lt;span style=&#34;color:#99d1db&#34;&gt;uint&lt;/span&gt;(&lt;span style=&#34;color:#ef9f76&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color:#99d1db;font-weight:bold&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ef9f76&#34;&gt;32&lt;/span&gt; &lt;span style=&#34;color:#99d1db;font-weight:bold&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ef9f76&#34;&gt;0&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;Go101&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      
      <category>go</category>
      
      <category>bitwise</category>
      
      
      <guid isPermaLink="true">/posts/240309_gocheckosbits/</guid>
    </item>
    
  </channel>
</rss>
