无符号数
有符号数,有符号数的最常见的表示方法之一就算补码
补码的 最高有效位是符号位
正数的补码是本身,负数的补码是本身值每位求反最后加1
二进制的&与(都为真时为真) |或 (一个为真时为真)^异或(有一个为真,但两个不相同时为真) ~取反(真时假,假时真)
-3 的16 进制 首先原码为0011,假如是正数补码等于原码, 负数的求补码,首先计算|-3|的原码,然后再计算反码(就是按二进制位取反),再在反码的基础上加1
正数补码 是本身 ,负数补码是绝对值按位取反码再加1;豁然明朗,
再次总结下 无符号表示,有符号表示(一般最通常用的是补码,或是反码)
w位无符号 取值范围0 ~ 2(w - 1) 1111 8 4 2 1 = 15 2(w) - 1
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 192 + 56 + 7 = 192 + 63 = 255 = 2(8) - 1 = 16 * 16 = 256 - 1 = 255
w位 无符号取值范围 2(w) - 1
w位 有符号取值范围-2(w - 1) ~ 2(w -1) - 1
w = 8
-2(8-1) ~ 2(8-1) - 1 = -2(7) ~ 2(7) - 1 = -128 ~ (128 - 1) = 128 ~ 127
补码,反码
有符号才反码、补码,反码 + 1 = 补码
有符号的 补码是先通过绝对值的原码 取反再 加 1
再加深下对二进制移位规则的回顾,左移x << k 丢弃最高的k个有效位,在右侧尾部补充k个0
右移x >> k 逻辑移时 在左侧补k个0
算符移位时在左侧补k个移位数的最高有效位.