美文网首页
iOS学习笔记之字节操作

iOS学习笔记之字节操作

作者: iOS_朱益锋 | 来源:发表于2017-08-01 14:42 被阅读48次

    二进制、十进制、十六进制

    • 十进制转二进制

    正整数

    除二取余,然后倒序排列,高位补零

    负整数

    先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一

    • 十进制转十六进制

    小数部分

    对小数点以后的数乘以2,有一个结果吧,取结果的整数部分(不是1就是0喽),然后再用小数部分再乘以2,再取结果的整数部分……以此类推,直到小数部分为0或者位数已经够了就OK了。然后把取的整数部分按先后次序排列就OK了,就构成了二进制小数部分的序列

    • 二进制转十进制

    首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数。
    先看首位是0的正整数,补齐位数以后,将二进制中的位数分别将下边对应的值相乘,然后相加得到的就为十进制。
    若二进制补足位数后首位为1时,就需要先取反再换算

    十进制转十六进制以及十六进制转十进制

    方法同上,区别是一个除以2,一个除以16

    注:10 -> A, 11 -> B, 12 -> C, 13 -> D, 14 -> E, 15 -> F

    左移、右移

    • 左移<<

    用来将一个数的各二进制位全部左移若干位
    高位舍弃,低位补0;
    简单介绍一种方便计算的方法:
    8 << 1的值为82=16;
    8 << 2的值为8
    (2^2)=32;
    8 << n的值为8*(2^n)

    • 右移>>

    用来将一个数的各二进制位全部右移若干位;
    符号位向右移动后,正数的话补0,负数补1
    简单介绍一种方便计算的方法:
    8 >> 1的值为8/2=4;
    8 >> 2的值为8/(2^2)=2;
    8 >> n的值为8/(2^n)

    逻辑运算符

    • &

    按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
    例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。
    按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 ,保留低八位,可作 a&255 运算 ( 255 的二进制数为0000000011111111)。

    • |

    按位或运算按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
    例如:9|5可写算式如下: 00001001|00000101
    00001101 (十进制为13)可见9|5=13

    • 异或^

    按位异或运算按位异或运算符“”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如95可写成算式如下: 00001001^00000101 00001100 (十进制为12)

    • ~

    求反运算求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:1111111111110110

    • 左移运算符<<

    左移运算左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

    • 右移运算符>>

    右移运算右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。

    相关文章

      网友评论

          本文标题:iOS学习笔记之字节操作

          本文链接:https://www.haomeiwen.com/subject/cdejlxtx.html