首页 > 编程知识 正文

C# 数据存储的原理/进制的算法8421码

时间:2023-05-06 08:09:32 阅读:256722 作者:3221

数据存储的原理
整数在计算机中存储是以补码的方式存储的,想要知道补码,必须先知道数字进制转换和原码和反码
1,不同进制的组成和输出
(1)二进制:以0b开头,由0和1组成
(2)八进制:以0开头,由0-7组成(C#中没有现存的表示方式)
(3)十进制:默认就是十进制,由0-9组成
(4)十六进制:以0x开头,由0-9+A-F组成

int i=0b10111;label1.Text="二进制:0b10111="+i.ToString();int j = 102;label2.Text = "十进制:102=" + j.ToString();int k = 0x12AF;label3.Text = "十六进制:0x12AF=" + k.ToString();

// 输出结果

2,进制之间的转换算法
其他进制转十进制
a,口诀:将所有的位值*进制数的次方连起来即可得到十进制
b,位值:每一个位数上面对呀的值
c,进制数:本身是多少进制,进制数就是多少
d,次方:从右向左,从0开始编导,对应位上面的编号就是该位的次方

例1 十进制=>十进制

1234=1000+200+30+4 =1x10^3+2x10^2+3x10^1+4x10^0=1234

例2 二进制=>十进制

0b100100=1x2^5+0x2^4+0x2^3+1x2^2+0x2^1+0x2^0 =32+0+0+4+0+0=36

十进制转其他进制:
除以要转的进制数,直至商为0,余数反转

将x进制转成y进制快速转换法
利用8421码(将每个二进制对应的位上计算一个固定的十进制数)

1 1 1 1 1 1 1 1128 64 32 16 8 4 2 1

1.二进制2位数组合
2.八进制3位数组合
3.十六进制4位数组合
例子:
将二进制0b100100转成8进制 0b100100=>100 100=>4 4=44
将二进制0b100100转成16进制 0b100100=>0010 0100=>2 4=24

以十进制为桥梁
x进制>十进制>y进制

3,原码
将一个整数转换成二进制,然后最高位用来表示符号位(0表示整数,1表示负数,其余位表示数值位)
例如:7:00000111 -7:10000111

4,反码
整数的反码和原码一致,负数的反码位数全部取反,除最高位

5,补码
正数的补码和原码一致,负数的补码在反码的基础上末尾+1

符号位原码反码补码+70000011100001110000111-71000011111110001111001

十进制负整数转二进制算法
1,将十进制输出转化成二进制数,不管符号
2,对转化的二进制数逐位取反
3,对取反后的二进制数加1,结果就是十进制负数转化成的二进制数

-5转化成二进制数(十进制)5=(二进制)00000101(二进制)00000101逐位取反为:11111010二进制数+1得:11111011

二进制负数转十进制算法
1,对二进制数逐位取反
2,对取反都的二进制数加1,加上负号,结果就是二进制负数转化成的十进制数

(-5)11111011转化成二进制数(二进制)11111011逐位取反为:00000100 二进制数+1得:0000101,加上负号;结果为-5;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。