每 8 位 二进制,各位从左到右对应的权值分别是 128,64,32,16, 8,4,2,1
即 2 的 (n-1) 次方,n 是从右到左当前位的位数
因此随便拿一个 256 以内的数给你化为二进制,都可以分解为权值相加。对应的权值的位值为 1,其他位为 0 即可
比如 88 可以分解为 64 + 16 + 8
,因此这几个权值对应的位应该是 1,其他位为 0
转化为二进制即是 1000 1001
解释
我们都知道,一个字节 ( Byte ) 由 8 位二进制组成
我们也知道,一个 Byte 所能表示的最大整数为 256
,转成二进制,就是 11111111
那么,我们就可以得出以下拆解
256 = 1 * 2^7 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1* 2^2 + 1* 2^1 + 1 * 2^0 = 1 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 1 * 4 + 1 * 2 + 1 * 1
然后呢,我们可以知道,对于 256 范围以内的任意值,都可以拆解成 1 2 4 8 16 32 64 128
相加
比如
88 = 64 + 16 + 8 = 0 * 128 + 1 * 64 + 0 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 0 * 2 + 0 * 1
55 = 32 + 16 + 4 + 2 + 1 = 0 * 128 + 0 * 64 + 1 * 32 + 1 * 16 + 0 * 8 + 1 * 4 + 1 * 2 + 1 * 1
185 = 128 + 32 + 16 + 8 + 1 = 1 * 128 + 0 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 0 * 2 + 1 * 1
然后,我们只要把这些 0
和 1
按照从左往右的顺序放在一起就可以了
88 = 64 + 16 + 8 = 01011000 55 = 32 + 16 + 4 + 2 + 1 = 00110111 185 = 128 + 32 + 16 + 8 + 1 = 10111001
所以,是不是很简单,转换十进制为二进制简直就可以口算了
目前尚无回复