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

简介: 首先,我们直观看,w(8)位有符号的值范围为 -2(w - 1) ~ 2(w - 1) - 1 = -128 ~ 127;w(8)位无符号的值范围2(w) - 1 = 255;2(w) / 2(w - 1) = 22(5) / 2(5 - 1) = 2(5) / 2(4) = (2 * 2...

首先,我们直观看,

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 ,则将无符号数提取补码  ,得到有符号



目录
相关文章
|
6天前
|
Python
不同数据类型之间能否随意转化
不同数据类型之间能否随意转化。
14 5
|
6月前
|
SQL 关系型数据库 MySQL
无法针对行和行之间的运算
无法针对行和行之间的运算
43 0
|
4月前
|
存储
计算机中二进制与数字逻辑
【7月更文挑战第26天】
76 2
|
5月前
|
安全 C语言 C++
数与字符串相互转化
数与字符串相互转化
28 1
|
6月前
|
存储
不同数据类型之间混合运算
该内容是一个编程问题示例,要求将大写字母转换为小写字母。解题关键点在于,小写字母的ASCII码比对应大写字母大32。提供了两张图片来展示ASCII码的差异和转换结果。
49 0
|
6月前
|
C++
41.用c++编写程序:从键盘上任意输20个1-99之间的整数,分别统计其个位数0-9的数字各有多少
41.用c++编写程序:从键盘上任意输20个1-99之间的整数,分别统计其个位数0-9的数字各有多少
52 0
|
编译器 C++
c++中基本类型详细解释外加基本运算规则
类型 含义 wchat_t 宽字符 bool 布尔类型 char 字符 chat16_t unicode字符 chat_32 unicode字符 short 短整型 int 整形 long 长整型 longlong 长整型 float 单精度浮点型 double 双精度浮点型 longdouble 扩展精度浮点型
118 1
小符号 大影响
C语言学习bug记录第一弹
关于奇函数和偶函数之间的加减乘除关系
关于奇函数和偶函数之间的加减乘除关系
232 0