• 计算机里比特位、字节位的左右顺序和我们现实生活中的数字写法的左右顺序的对比


    首先明确一个概念:bit是比特的意思;byte是字节的意思。bit没有比特位的意思,比特位的全称应该是bit position;而字节位则是byte position。

    叫法:最高位比特、最高位字节。还有就是下标(index)位(position)两个概念(位的说法是高低,下标/下标值的说法是大小;位左边是最高,下标右边是最大)。

    正文:

    现实生活中我们写数字一般都是从最高位最低位;即210这个数字,2是最高位(百位),0是最低位(个位)。

    对于数组或List而言,元素的写法则是 arr[0]写在最左边,arr[arr.Length-1]写在最右边,即下标最小的arr[0]写在最左边,下标最大的arr[arr.Length-1]写在最右边。

    计算机里当下标和位这两个概念同时出现时,我个人经常会搞混;故在此自我定义一番:

    当 数组/List 中存有相关联的 比特集/字节集 时(如arr[0]存的是long变量ll的某个字节值,arr[1]同样存的是该变量ll的另一个字节值):

     我个人令arr[0]是最高位字节(最高比特位),arr[arr.Length-1]是最低位字节(最低比特位);这样将它们写在纸上也符合我们的书写习惯,即最左边是最高位,最右边是最低位。

    byte最高位、byte次高、byte低、byte最低(由左往右字节在数组或List中的顺序);这种规定下,当我们要取部分字节时要注意,arr中第一个元素不是第一个字节(而是最高位字节)。

    对于CRC码我也给自己规定:arr[0]是CRC的高位,arr[1]是CRC的低位。

    Flag:写数组或List元素时,从左往右则是list[0]、list[1]、。。。。、list[list.Count-1](这个应该不容易搞混,毕竟初始化数组的语句是这样 var arr = new []{"m", "n", "q"};而arr[0]的值是"m")。

  • 相关阅读:
    [日常] Go语言圣经--示例: 并发的Echo服务
    [日常] Go语言圣经--示例: 并发的Clock服务习题
    [日常] Go语言圣经--接口约定习题2
    [日常] Go语言圣经--接口约定习题
    [日常] Linux下的docker实践
    [日常] Go语言圣经-指针对象的方法-bit数组习题2
    [日常] Go语言圣经-指针对象的方法-bit数组习题
    [日常] Go语言圣经-Panic异常,Recover捕获异常习题
    [日常] Go语言圣经-Deferred函数
    [日常] Go语言圣经-可变参数习题
  • 原文地址:https://www.cnblogs.com/silentdoer/p/6322973.html
Copyright © 2020-2023  润新知