十六进制(hexadecimal)是计算机中数据的一种表示方法。它的规则是“逢十六进一”。
16进制的加减法运算方法 16进制数的加减
16进制的加减法运算方法 16进制数的加减
16进制的加减法运算方法 16进制数的加减
十六进制数具有下列两个特点:
英文字母A,B,C,D,E,F分别表示数字10~15。
计数到F后,再增加1个,就进位。
十六进制数是计算机常用的一种计数方法,它可以弥补二进制数书写位数过长的不足,也用于电视机中。
十六进制数的表示方式为0x开头。
示例:0xAF=175
十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15.十六进制数的技术规则是“逢十六进一”,它的各位的权是以16的N次方标识的。通常,对十六进制数的表示,可以在数字的右下角标注16或H,但在C语言中是在数的前面加数字0和字母X即0X来表示。例如,12AF在C语言中表示为0X12AF。
十六进制数的加减法的进/借位规则为:借一当十六,逢十六进一。
比如17,用它除以16,满十六向十位进1,余1留在个位!所以它的十六进制是11。
各进制数的参照:
16位进制加减运算
3D25H - 05C3H = 3762H
3D25
-05C3
5-3=2
2-C=2-12 = (16+2-12) = 6 (由于2-12不够减,所以向前借1 即16)
D-5=(13-1-5) = 7(13-1是因为2-12不够而被借走了一位)
3-0=3
结果为:3762H
用十进制时向前借1位就是借10,而在16进制里向前借1就是借16
3762H+05C3H =3D25H
3762
+05C3
2+3 = 5
6+12 = 18 = (18-16=2) =2(满16进1)
7+5=12+1=13=D
3+0=3
结果:3D25H
逢十六进一
十六进制
1. 数码: 0. 1. 2 .... 9.A. B. C. D. E. F.
其中:十六进制数码:A B C D E F
十进制数值:10 11 12 13 14 15
基数: 16
2. 计数规则: 逢十六进一
借一当十六
3. 按权展开式: 按权展开每上十六进制数.
例: 4E6C=4×16^3+E×16^2+6×16^1+C×16^0
=4×16^3+14×16^2+6×16^1+12×16^0
例:A76.F8=10×16^2+7×16^1+6×16^0+15×16^-1+8×16^-2
4. 运算: (只介绍加, 减法)
(1) 加法: 逢十六进一
例: 4A7+8F=536
4 A 7
+) 8 F
5 3 6
(2) 减法: 借一当十六
例: 536-8F=4A7
5 3 6
-) 8 F
4 A 7
二进制
1、数码(两个):0、1 ; 基数: 2
2、计数规则: 逢二进一
借一当二
下面我们用十进制作对比,看看二进制是如何计数的:
十进制数:0 1 2 3 4 5 6 7 8 9
二进制数:0 1 10 11 100 101 110 111 1000 1001
就权而言,与十进制有相似之处:
例如: 十进制数: 9 5 1 . 4 2
各位权数: 10^2 10^1 10^0 10^-1 10^-2
二进制数: 1 0 1 . 1 1 1
各位权数: 2^2 2^1 2^0 2^-1 2^-2 2^-3
3、按权展开式:
例: 1101=1×2^3 + 1×2^2 + 0×2^1 + 1×2^0
1001011 = 1×2^6 + 1×2^3 + 1×2^1 + 1×2^0
4、运算:
(1) 加法(逢二进一)。注意:要与逻辑代数区别开来:
二进制加法运算规则:
0 + 0 = 0 ; 0 + 1 = 1; 1 + 0 = 1; 1 + 1 = 10
例:11011 + 101 =100000
1 1 0 1 1
+) 1 0 1
______________
1 0 0 0 0 0
(2) 减法(借一当二)
例: 11001 - 111 = 10010
1 1 0 0 1
-) 1 1 1
______________
1 0 0 1 0
(3) 乘法: (转换成加法)
例: 11001×101
1 1 0 0 1
× 1 0 1
________________
1 1 0 0 1
+)1 1 0 0 1
_________________
1 1 1 1 1 0 1
(4) 除法: (转换成减法)
例: 1111/101=11
例: 1011011/110 = 1111 ... 余数为1
直接加减,只是要16才进一,借的话一下借16
和十进制一样加减规则
a在十六进制中大小为10
故9+a = 13
9+a
____
13
9+a换成十进制是19
故9+a向高位进一,个位为3
读入的时候用%x读入,然后在程序里面直接用+,-,,/运算就行了,输出的时候再用%x。
int a,b;
scanf("%x%x",&a,&b);
printf("%x\n%x\n",a+b,a-b);
输入:9 7
输出:
10
2
呵呵,已经解决了啊
读入的时候用%x读入,然后在程序里面直接用+,-,,/运算就行了,输出的时候再用%x。
int a,b;
scanf("%x%x",&a,&b);
printf("%x\n%x\n",a+b,a-b);
输入:9 7
输出:
10
2
版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 a13828211729@163.com 邮箱删除。