【学习总结】数制码制

本文详细介绍了数制与码制的基础知识,包括进位计数制、不同进制间的转换方法以及机器数的原码、反码和补码表示。还探讨了按位运算符的使用,如按位与、或、异或、移位等,以及不同长度数据进行位运算的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数制与码制

pic

内存容量单位换算表

1.1 进位计数制

一般来说,如果数制只采用R个基本符号,则称为基R数制,编码符合逢R进位。以下,
是对R进制数N的按权展开多项式,n表示整数部分的位数,m表示小数部分的位数。
  N = D n − 1 R n − 1 + D n − 2 R n − 2 + . . . + D 0 R 0 + . . . + D − m R − m . \ N=D_{n-1}R^{n-1}+D_{n-2}R^{n-2}+...+D_{0}R^{0}+...+D_{-m}R^{-m}.  N=Dn1Rn1+Dn2Rn2+...+D0R0+...+DmRm.

二进制八进制十进制十六进制
00000000
00010111
00100222
00110333
01000444
01010555
01100666
01110777
10001088
10011199
10101210A
10111311B
11001412C
11011513D
11101614E
11111715F
进制数的对应关系
1.2 进制转换

pic

1.2.1 转十进制

“按权相加”

其它进制转换十进制
10101101.10B27+25+23+20+2-1+2-3173.625D
31Q3x82+1x81+1x80201D
2A.61H2x161+Ax160+6x16-1+1x16-242.3789D
1.2.2 十进制转其它进制

“除R取余”
将十进制数连续用基数R去除,直到商数到0为止;每次除得的余数依次为二进制数由低到高的各位值。

47D101111B
47/2 = 23a0=1
23/2 = 11a1=1
11/2 = 5a2=1
5/2 = 2a3=1
2/2 = 1a4=0
1/2 = 0a5=1
1.2.3 其它进制间互转

“按位转换”

1.3 机器数的编码
1.3.1 原码

最高位表示符号位,其余各位表示真值的绝对值;0表示正数,1表示负数。
pic
真值0用原码表示有两种: - 0、+ 0

数值原码
X1 = + 1100110B[X1] = 01100110B
X1 = - 1100110B[X1] = 11100110B
1.3.2 反码

正数的反码与原码相同;负数的反码,符号位仍用1表示,其余数值位按位取反。
真值0用反码表示有两种: - 0、+ 0

数值原码
X1 = + 1100110B[X1] = 01100110B
X1 = - 1100110B[X1] = 10011001B
1.3.3 补码

补码是为了解决将减法转化为加法的问题。
正数的补码与原码相同;负数的补码先写出该负数相对应的正数的原码表示,然后按位取反,末位加1。

+46D+46D
+46D表示00101110
按位取反11010001
末位加111010010
16进制表示 D 2[- 46 ] =D2H
1.4按位运算符
1.4.1 & 按位与
运算规则0 & 0 = 00 & 1 = 01 & 0 = 01 & 1 = 1
参加运算的两个对象同时为“1”,结果才为“1”,否则为“0”。
1.4.2 | 按位或
运算规则0 | 0 = 00 | 1 = 11 | 0 = 11 | 1 = 1
参加运算的两个对象,只要有一个为“1”,结果即为“1”。
1.4.3 ^ 按位异或
运算规则0 ^ 0 = 00 ^ 1 = 11 ^ 0 = 11 ^ 1 = 0
参加运算的两个对象,如果两个相应位为“异”(值不同),则结果为“1”,否则为“0”。
1.4.4 ~ 取反
运算规则~ 1 = 0~ 0 = 1
即将“0”变为“1”,“1”变为“0”。
1.4.5 > > >> >> 右移
>> 运算规则将一个运算对象的各二进制位全部右移若干位,正数左补“0”,负数左补“1”,右边丢弃。
操作数每右移一位,相当于该数除以“2”。
1.4.6 < < << << 左移
<< 运算规则将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
若左移时舍弃的高位不包含“1”,则每左移一位,相当于该数乘以“2”。
1.4.7 > > > >>> >>> 无符号右移
>>> 运算规则将一个运算对象的各二进制位全部右移指定位数;右移后左边空出的位用“0”填充,移出右边的位被丢弃。
1.4.8 不同长度的数据进行位运算

如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。
以long型4字节,int型2字节为例,右对齐后,左边不足的依照下面三种情况补足:
如果整型数据位正数,左边补16个0;
如果整型数据位负数,左边补16个1;
如果整型数据为无符号数,左边补16个0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值