16进制小技巧

来源:互联网 发布:三星s4网络锁解锁软件 编辑:程序博客网 时间:2024/06/10 01:31

看最高那个数大于8那么就是负数,否则为正数。
异号相加是不可能溢出的
同号相加变成其相反的号就溢出了。
负数用十六进制表示,通常用的是补码的方式表示.
十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。
正数的补是它本身;负数的补码是它本身的值每位求反,最后再加一。
例如:求-3的十六进制
3的十六进制为0003,3求反之后是C,再加1,成D,所以-3的十六进制就是:FFFD
例如:
十六进制数怎么转换十进制负数

需要借助二进制来进行,举例:
c3H是有符号数,最高位为1表示这是一个用补码方式存储的负数
c3H=11000011B,减1=11000010B,取反=00111101B=61D,所以c3H=-61D
附:补码特性:
1、一个负整数(或原码)与其补数(或补码)相加,和为模。
2、对一个整数的补码再求补码,等于该整数自身。
3、补码的正零与负零表示方法相同。
(1)补码加法
[X+Y]补 = [X]补 + [Y]补
【例6】X=+0110011,Y=-0101001,求[X+Y]补
[X]补=00110011 [Y]补=11010111
[X+Y]补 = [X]补 + [Y]补 = 00110011+11010111=00001010
注:因为计算机中运算器的位长是固定的(定长运算),上述运算中产生的最高位进位将丢掉,所以结果不是100001010,而是00001010,。

(2)补码减法
[X-Y]补 = [X]补 - [Y]补 = [X]补 + [-Y]补【1】
【例7】1-1 [十进制]
1的原码00000001 转换成补码:00000001
-1的原码10000001 转换成补码:11111111
1+(-1)=0
00000001+11111111=00000000
00000000转换成十进制为0
0=0所以运算正确。
【例8增】-7-(-10) [十进制]
改为加法形式:-7-(-10)=-7+(-(-10))
-7的补码:11111001
-(-10)的补码:-10的原码为10001010,-(-10)的原码为00001010,
-(-10)的补码就是其原码,为00001010
-7 - (-10)= -7 + 10 = 3
11111001+00001010 = 00000011
转换成十进制为3

(3)补码乘法
补码的乘法不具备【X*Y】补=【X】补×【Y】补的性质。但是【X*Y】补==【X】补×Y,所得结果再取补码,如x=101,y=011,[x*y]补=-[(-101)*011]=-[011*011]=-01001=10111
其中,若【Y】补=y31y30……y0,则 Y=-y31*2^31+y30*2^30+……+y0*2^0

2.反码
正数:正数的反码与原码相同。负数:负数的反码,符号位为“1”,数值部分按位取反。例如: 符号位 数值位
[+7]反= 0 0000111 B
[-7]反= 1 1111000 B
16进制反码需要转换为相应二进制求二进制反码

  1. 16进制加减法,模仿十进制,逢16进1,借1当16.
原创粉丝点击