一、数制
二进制 | Binary Notation |
八进制 | Octal Notation |
十进制 | Decimal Notation |
十六进制 | Hexdecimal Notation |
转为十进制:按权展开相加
十进制转为X进制:整数部分----除以X倒序取余
:小数部分----乘以X取整
二、数据的存储与表示
2.1 存储单位
位: bit, b 计算机中最小信息单位
字节: Byte, B 计算机中基本信息单位,存储单元,1Byte = 8bit,
字: Word 字的位数称为字长,不同计算机系统、不同平台有所区别
2.2 原码、反码、补码
真值:
原码:Original Code 机器数,用 0、1 在最高位表示正负
0 有 +0 和 -0, +0 = 0000 0000, -0 = 1000 0000
反码:One's Complement 正数反码同原码,负数反码为原码保留符号位 1 ,其余各位按位取反,0 的反码表示不唯一
补码:Two's Complement 正数补码同原码,负数补码为其反码加 1 。(进位不改符号位) (补码的补码等于原码)
三、运算
在进行运算的时候要注意:
是以补码形式进行运算,正数的补码同原码,不需要进行转换,负数一定要转换为补码后再进行运算,运算完毕后,
再次转换补码,注意符号位,若为 0 ,是正数,不要再进行 补码-->原码 转换,(自己犯了不少次这样的错误)。
有时候会需要注意字长、字节、位数 ······
位运算(参考Java):
按位取反 ~ :(转补码),各二进制位取反(补码形式下不考虑符号位,一并转换),0-->1, 1-->0
按位与 & : 基操同上,两个对应位同真则真:同 1 则 1 ,否则 0
按位或 | : 基操同上,两个对应位同假则假:同 0 则 0 ,否则 1
按位异或 ^ : 基操同上,两个对应位同则 0 ,非则 1
左移运算符 <<: 基操同上,各进制位左移 n 位,右补 0 ,高位左移后溢出舍弃
右移运算符 >>: 基操同上,各进制位右移 n 位,左补最高位----符号位 ,低位右移后舍弃
无符号右移运算符 >>>: 基操同上,各进制位无符号右移 n 位,左最高位补 0 ,低位右移后舍弃
不同长度的数据进行位运算(如 byte 和 int):
按最长位补齐左侧,正补满 0 ,负补满 1