上位机级,位机有符号无符号之间的关系及互换

首先,我们直观看,

w(8)位有符号的值范围为 -2(w - 1) ~ 2(w - 1) - 1 = -128 ~ 127;

w(8)位无符号的值范围2(w) - 1 = 255;

2(w) / 2(w - 1) = 2

2(5) / 2(5 - 1) = 2(5) / 2(4) = (2 * 2 * 2 * 2 * 2) / (2 * 2 * 2 * 2) = 2


v = -12345 (有符号)

有符号数补码我们之前已经讲过相关的转换步骤了

既先取绝对


值的原码,再按位取反 ,再加1

|-12345| =0X3039 十进制转16 用除16 以余作16进制有效位 ,最先的余数有效位最低,最后的有效位最高,每次的商接着除16,一直到最未余数。
(128,64,32,16,((8,4,2,1))将-12345原码的二进制0011 0000 0011 1001   反码取反是1100 1111 1100 0110 然后再加1 是 1100 1111 1100 0111 既-12345有符号数的补码 

原码:        0011 0000 0011 1001(十六进制为:0X3039,十进制为: 3 * 16(3) + 0 * 16(2) + 3 * 16(1) + 9 * 16(0)) = 3 * 4096 + 0 + 48 + 9 *1 = 3 * 4096 + 57= 12345

反码:        1100 1111 1100 0110(十六进制为0XcFc6,十进制为:12 * 16(3)+15 *16(2)+12 * 16(1)+6 * 16(0)) = 12 * 4096 + 15 * 256 + 12 * 16 + 6 = 201388230

反码+ 1   1100 1111 1100 0111()

我们再来看下w = 16时 ,无符号,有符号可存储的数值范围:

无符号2(16) - 1 = 65535

有符号 -2(16 - 1) ~ 2(16 - 1) - 1 为,-32768 ~ 32767

十进制,二进制 ,十六进制

一般 十进制转换成二进制,我一般是讲 十进制先先转成十六进制,再讲十六进制转换成二进制,因为 二进制和十六进制之间的转换很好换算 ,一个十六进制转成4个二进制,同样的4个二进制转成1个十六进制.

至此我们主要接触的相对新手较难的知识点有移位,有符号补码,无符号补码规则。

其实无符号,有符号 对于这两个名词我们从汉字理解就能看出些头绪  无符号就是 所有的符号都表示数据,有符号呢就是 最高的有效位为符号位

当最高有效位为1时,表示的数据为负数,当最高有效位为0时,表示的数据为 非负.

就是有符号位的最高有效位既符号位为0时,此有符号数据既为无符号数

我们又讲到,正数的补码是它本身,负数的补码是值取反加1

有符号数是针对二进制来讲的。用最高为作为符号位,"0"代表"+"

"1" 代表"-" 其余数位作数值位,代表数值。

无符号就是没有符号位,所有位都表示数值

有符号位就是就符号位,最高位为符号位  最高位 为1 时 "-"


如果有符号数的最高位为1 则将有符号数取补码得到的就是无符号

有符号数最高位符号位为1是,讲有符号数据取补码,得到的就算无符号数

有符号数转换成无符号 看 有符号数的 最高位是否为1,如果不为1(既为0) 则有符号数据直接就算无符号数



有符号 -> 无符号 ,如果有符号数最高有效位符号位为0 则有符号数据直接就算无符号数据

如果有符号数据最高有效位为1 ,则将有符号数据取补码   得到的数就算无法和


如果无符号最高位1 ,则将无符号数提取补码  ,得到有符号



上一篇:Windows 注册自定义的协议 实现通过网页调用本地程序的功能例如QQ等


下一篇:与众不同 windows phone (21) - Device(设备)之摄像头(拍摄照片, 录制视频)