数据类型的划分和进制之间的转换方式(二进制,十进制,八进制,十六进制)

数据类型的划分

值类型(13种)

值存储在堆栈中 存储空间小 调用速度快

a. 值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。

b. 值类型直接存储其值

c. 值类型的实例通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中

d. 值类型总是分配在它声明的地方:作为字段时,跟随其所属的变量(实例)存储;作为局部变量时,存储在栈上。栈的内存是自动释放的。

e. 值类型在内存管理方面具有更好的效率,并且不支持多态,适合用做存储数据的载体。

f. C#的值类型包括:结构体(数值类型、bool 型、用户定义的结构体),枚举,可空类型

布尔型

bool类型:true/false 1/0 默认取值:false

整数型

位:代表取值范围2的多少次方

有无符号:代表是否可以取得负数

无符号代表不包括负数

0是最小的正整数

-1是最大的负整数

byte/sbyte: 8位 2^8=256

byte:无符号,从0取到255

sbyte:有符号,从-128取到127

short/ushort:16位

int/uint:36位

int:有符号,-2,147,483,648到2,147,483,647

long/ulong:64位

小数型

decimal:128位精度型

double:64位双精度

float:32位单精度

字符型

char:16位Unicode字符

引用类型(2种)

string object

值存储在堆中 存储空间大 调用速度

引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。继承自 System.Object 类。

用户自定义引用类型有:class、数组、interface 或delegate

命名空间

命名空间>类>对象

命名空间:using System;

变量

一个变量只不过是一个供程序操作的存储区的名字。在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。

变量的声明

C#中变量定义的语法

<data_type> <variable_list>;

data_type:必须是一个有效的 C# 数据类型,可以是 char、int、float、double 或其他用户自定义的数据类型。

variable_list:可以由一个或多个用逗号分隔的标识符名称组成

int a,b,c;

变量的初始化

变量通过在等号后跟一个常量表达式进行初始化(赋值)。

变量初始化是 C#强调安全性的另一种方式。简单的说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量。大多数现代编译器把未初始化标记为警告,但 C#编译器把它当作错误来看待。

计算机存储数据

整数在计算机中存储是以补码的方式存储的

不同进制的组成和输出

二进制:以 0b 开头,由 0 和 1 组成

八进制:以 0 开头,由 0-7 组。(C#中没有现成的表示方式)

十进制:默认就是十进制,由 0-9 组成

十六进制:以 0x 开头,由 0-9+A-F 组成

进制之间的转换算法

其他进制转十进制

口诀:将所有的位上面的值*进制数的次方连起来既可以得到十进制

进制数:本身是多少进制,进制数就是多少

次方:从右向左,从 0 开始编号,对应位上面的编号就是改位的次方

十进制转其他进制

除以要转换的进制数,直至商为 0,余数反转

将 x 进制转成 y 进制快速转换法

利用 8421 码(将每个二进制对应的位上计算一个固定的十进制数)
​ 1 1 1 1 1 1 1 1
​ 128 64 32 16 8 4 2 1

二进制 2 位数组合

八进制 3 位数组合

十六进制 4 位数组合

例如:

将二进制 0b100100 转成 8 进制

0b 100 100=>100 100=>4 4=44

将二进制 0b 10 0100 转成 16 进制

0b 10 0100=>10 0100=>2 4=24

以十进制为桥梁

x 进制>十进制>y 进制

原码

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

7:0000 0111

-7:1000 0111

反码

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

补码

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

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

十进制负整数转二进制算法

将十进制输转化成二进制数,不管符号。

对转化的二进制数逐位取反

对取反后的二进制数加 1,结果就是十进制负数转化成的二进制数。

例如:

-5 转化成二进制数
​ (十进制)5=(二进制)0000 0101
​ (二进制)0010 0000 逐位取反为:1111 1010
​ 二进制数+1 得:1111 1011

二进制负数转十进制算法

对二进制数逐位取反

对取反后的二进制数加 1,加上负号,结果就是二进制负数转化成的十进制数。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值