zoukankan      html  css  js  c++  java
  • IOS笔记-计算机中的进制 反码补码 和存储细节

    1、计算机中的进制

        计算机能够识别的只有二进制 0、1

        进制就是一种计量的单位

    2、常见的进制:

     二进制:逢二进一  用0、1来表示,定义一个二进制的数:0b 或者 0B  ,0B1010(2)=10(10)

     八进制:逢八进一  用0-7之间的数字表示,定义一个八进制的数:0 开头

    10进制:逢10进一  用0-9之间的数字表示,定义一个十进制的数(默认)

    16进制:逢16进一  用0-9表示16进制中的0-9,用A-F表示16进制中的10-15

            定义一个16进制的数,用0x或者0X开头

    3、进制的转换问题

    10--->2 : 除2取余法,取余数逆序  (把一个10进制的数每次除以2,得到余数)

    2---->10: 用二进制的每一位乘以2的(x)次方,

       

               如果是正整数:x从右至左,从0开始依次增1

               如果是实数:  x从小数部分开始,从左至右,x依次增加1

               010101110.10101

    10-->8:除8取余,取余数的逆序

    2--->8:取出三位(二级制)合成 1位(8进制) 

            01 101 101= 155

    8--->2:取出1(8进制)拆成3位(二进制)

    2--->16:取出四位(二进制)合成 1位(16进制)

    16-->2 :一拆四,取出1位(16进制)拆成 4位(二进制)

    8--->16:  8---->2---->16:先是1拆3,然后4合一

    16-->8 :  16--->2---->8 :先是1拆4,然后3合一

    4、原码、反码、补码

        为什么要引入反码和补码?

        存储一个负数,主要还是用来优化计算机的减法运算

      

        原码:一个正数的二进制表示,原码

             整数的原码、反码、补码都是一样的

        反码:符号位不变,其他位按位(逐位)取反的结果

        补码:反码+1

             00000000 00001010

         

        取反:11111111 11110101

        +1   11111111 11110110   -5

    5、位运算

        &   |  ~  >>  <<

        & 按位与       口诀:同1为1

        | 按位或       口诀:有1为1

        ~ 按位取反     口诀:1变0,0变1

        >>右移位       把一个数的二进制位逐位向右移动 a>>1  把a向右移动1位

                      相当于/2

                      注意:向右移位,移出的那位删除,左侧补符号位

        <<左移位       把一个数的二进制位逐位向左移动 a<<1  把a向左移动1位

     相当于*2

                      注意:

                      向左移位,有可能会改变一个数的正负性

                      向左移位,移出的位被删除,右侧补0

                      

                      任何数和1进行&操作,相当于取这个数的二进制的最后一位。

    6、变量在内存中的存储细节

        int  4个字节 %d %i

        float 4个字节 %f

        double 8个字节%f

        long  8个字节(64),32位下4个字节

        long long 8个字节,

    7、变量类型的修饰符

      

        short int  2个字节  %hd  

        10000000 00000000     -2(15)(-32768)

     -1 00000000 00000001

     ------------------------

        01111111 11111111      2(15)-1(32767)

        long       8个字节  %ld -2(63) ~ 2(63)-1

        long long  8个字节  %lld

        signed int 4个字节  %d

        unsigned int 4个字节 %u

    8、字符型

        字符型数据在内存中如何存储的?

        字符型单字节(8位)

        字符型存储过程 ---->整数--->2进制---->内存(字符对应的整数可以查询ascii码表)

        取出字符的过程内存---->二进制--->整数---->查出对应的字符

        char ch;

        ch='a';    -->97

       

        %d   97

        %c   a

        字符型和整形可以互相转换

  • 相关阅读:
    HL7数据类型分析(1)
    HL7 CDA高级培训
    JAVA开发常用类(二)
    Oracle中函数返回数据集
    Delphi中DLL或Package窗体载入与显示
    在乐山交流医疗保险审核工作
    JAVA开发常用类(一)
    JAVA开发常用类(三)
    Oracle函数返回超长字符串问题
    基于ODP的数据层基类C#源码
  • 原文地址:https://www.cnblogs.com/houzhitong/p/4499851.html
Copyright © 2011-2022 走看看