进制

位运算

时光总嘲笑我的痴心妄想 提交于 2020-02-21 22:23:12
文章目录 一、进制表示 1、进制 2、进制的表现形式 3、原码、反码和补码 二、位运算 1、&——与运算(and) (1)运算规则 (2)应用 2、|——或运算(or) (1)运算规则 (2)应用 3、^——异或运算 (xor) (1)运算规则 (2)应用 4、~——非运算(not) (1)运算规则 三、移位运算 1、<<——左移运算 2、>>——右移运算 3、>>>——无符号右移运算(没有无符号左移运算) 四、位运算应用 1、判断奇偶数(与运算) 2、交换两个数(异或) 3、求 m 的 n 次方 4、找出不大于 N 的最大的 2 的幂指数 一、进制表示 1、进制 进制是一种记数方式 ,可以用有限的数字符号代表所有的数值。由特定的数值组成。 2、进制的表现形式 二进制: 由 0 和 1 两个数字组成,都是以 0b 开始; 八进制: 由 0~7 数字组成,为了区分于其他进制的数字,都是以 0 开始; 十进制: 都是以 0~9 这九个数字组成,不能以 0 开头; 十六进制:由 0 ~ 9 和 A~ F 组成,为了区分于其他进制的数字,都是以 0x 或 0X 开始。 3、原码、反码和补码 原码——即为计算机中对数值的二进制表示 。如,十进制的 5 用二进制表示为 0000 0101 ;(最高位为符号位,1 表示负,0 表示正,并且在原、反、补的转换中,符号位不变) 反码 ——即取反

磁盘管理

こ雲淡風輕ζ 提交于 2020-02-21 11:40:02
df查看磁盘分区使用状况 -l 仅显示本地磁盘(默认) -a 显示所有文件系统的磁盘使用情况,包括比如/proc/ -h 以1024进制计算最合适的单位显示磁盘容量 -H 以1000进制计算最合适的单位显示磁盘容量 -T 显示磁盘分区类型 -t 显示指定文件系统的磁盘分区 -x 不显示指定文件系统的磁盘分区 2. du 统计磁盘上的文件大小 -b 以byte为单位统计文件 -k以KB为单位统计文件 -m以MB为单位统计文件 -h 按照1024进制以最合适的单位统计文件 -H 按照1000进制以最合适的单位统计文件 -s 指定统计目标 3. 磁盘分区和格式化 分区模式之MBR -主分区不超过4个 -单个分区容量最大2TB 分区模式之GPT -主分区个数"几乎",没有限制(最大支持128个分区) -单个分区的容量"几乎"没有限制(最大支持18EB) 使用parted工具 查看帮助信息 切换磁盘 输入 select 磁盘路径 给目标磁盘设置标签类型和查看分区信息 目标磁盘设置标签类型 mklabel 分区标签类型(loop、gpt、msdos) 查看分区信息 print (查看当前磁盘的信息) print all (查看所有磁盘的信息) 建立分区 使用命令行的方式建立分区 删除分区 使用以GB为单位指定分区的开始和结束 退出parted分区工具 quit 来源: https://www

C++ int与string的转化

谁都会走 提交于 2020-02-20 11:44:03
转自:http://www.cnblogs.com/nzbbody/p/3504199.html int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。 string前后加上双引号,告诉编译器把它当成一串字符来解释。 注意:对于字符,需要区分字符和字符表示的数值。比如:char a = 8;char b = '8',a表示第8个字符,b表示字符8,是第56个字符。 int转化为string 1、使用itoa(int to string) 1 //char *itoa( int value, char *string,int radix); 2 // 原型说明: 3 // value:欲转换的数据。 4 // string:目标字符串的地址。 5 // radix:转换后的进制数,可以是10进制、16进制等。 6 // 返回指向string这个字符串的指针 7 8 int aa = 30; 9 char c[8]; 10 itoa(aa,c,16); 11 cout<<c<<endl; // 1e 注意:itoa并不是一个标准的C函数,它是Windows特有的

适合初步练习PAT乙级——(1074) 宇宙无敌加法器

若如初见. 提交于 2020-02-18 17:16:53
适合初步练习PAT乙级——(1074) 宇宙无敌加法器 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。每一位的进制 d 或者是 0(表示十进制)、或者是 [2,9] 区间内的整数。理论上这个进制表应该包含无穷多位数字,但从实际应用出发,PAT 星人通常只需要记住前 20 位就够用了,以后各位默认为 10 进制。 在这样的数字系统中,即使是简单的加法运算也变得不简单。例如对应进制表“0527”,该如何计算“6203 + 415”呢?我们得首先计算最低位:3 + 5 = 8;因为最低位是 7 进制的,所以我们得到 1 和 1 个进位。第 2 位是:0 + 1 + 1(进位)= 2;因为此位是 2 进制的,所以我们得到 0 和 1 个进位。第 3 位是:2 + 4 + 1(进位)= 7;因为此位是 5 进制的,所以我们得到 2 和 1 个进位。第 4 位是:6 + 1(进位)= 7;因为此位是 10 进制的,所以我们就得到 7。最后我们得到:6203 + 415 = 7201。 输入格式:

类文件结构简介

旧街凉风 提交于 2020-02-17 06:46:36
理解类加载机制的基础 类文件结构 java编译后会生成字节码文件(*.class,即类文件),其之所以能够“一次编写,到处运行”是因为字节码文件时平台无关的,这些类文件被各个平台上的虚拟机加载执行,即 字节码平台无关,虚拟机平台相关 。 任何一个 .class文件对应一个类/接口,但是类/接口可能通过 类加载器 直接生成,不一定定义在 .class文件中。 1.1 类文件结构 *.class 文件是一组8位为基础单位的二进制流(4位标识一个16进制数,所以两个16进制数标识一个8位)。如果一个数据项需要一个以上的8位存储空间,则按照高位在前big-endian的方式使用若干个8位进行存储。 数据类型 Class文件有两种数据类型: 无符号数:基本数据类型,u1/u2/u4/u8分别代表1/2/4/8个字节的无符号数,用来描述数字、索引引用、数量之和按照utf-8编码构成的字符串值。 表:有多个无符号数和其他表组成的复合数据类型,以“_info”结尾。用于描述有层次关系的复合结构的数据。 class文件结构 class文件本质就是一张表,构成class文件的数据项如图所示: 描述同一类型但是数量不定的多个数据时,经常使用一个前置的容量计数器加若干个连续的数据项的形式——称这一系列连续的数据为某一类型的集合。 如下代码编译: package org.fenixsoft.clazz;

C++实现base64编码解码

亡梦爱人 提交于 2020-02-17 06:34:50
base64编码是将 3个字符 (共 24位 2进制)分成一组,然后 每6位 2进制编成一个新的字符。 也就是 3 x 8 = 6 x 4 。 6位2进制可以表示2的6次方个数,也就是64个,所以叫base64编码。 贴一张base64编码表, 由A-Z、a-z、0-9、+、/共64个字符组成 需要注意的是, base64编码后的长度一定是4的倍数。 当需要转换的字符个数正好是3的倍数时,可以直接转换, 转换后的长度为len(str)/3 x 4 当字符个数为除3余1时,前面按照常规,多出那一个字符就需要在后面补0(2进制),表示出2个base64字符,然后剩下两个用=填充。 当字符个数为除3余2时,前面按照常规,多出那两个字符就需要在后面补0(2进制), 表示出3个base64字符,然后剩下两个用=填充。 C++实现base64编码解码 # include <iostream> # include <cstdio> # include <cstdlib> # include <cstring> # include <algorithm> using namespace std ; string base64_encode ( string str ) { string base64_table =

适合初步练习PAT乙级——(1022)D进制的A+B

老子叫甜甜 提交于 2020-02-14 23:39:06
适合初步练习PAT乙级——(1022)D进制的A+B 输入两个非负 10 进制整数 A 和 B (≤2​30​​−1),输出 A+B 的 D (1<D≤10)进制数。 输入格式: 输入在一行中依次给出 3 个整数 A、B 和 D。 输出格式: 输出 A+B 的 D 进制数。 输入样例: 123 456 8 输出样例: 1103 # include <iostream> using namespace std ; int main ( ) { int a = 0 , b = 0 , d = 0 ; scanf ( "%d %d %d" , & a , & b , & d ) ; int t = a + b ; if ( t == 0 ) { printf ( "0" ) ; return 0 ; } int s [ 100 ] = { 0 } ; int i = 0 ; while ( t != 0 ) { s [ i ] = t % d ; t = t / d ; i ++ ; } for ( int j = i - 1 ; j >= 0 ; j -- ) printf ( "%d" , s [ j ] ) ; return 0 ; } 思路:设t=a+b,将每一次t%d的结果保存在int类型的数组s中,然后将t/d,直到t等于0为止

ios 关于MD5 加密的32位与16位

我的未来我决定 提交于 2020-02-11 19:47:43
转:http://www.cnblogs.com/changpengkaiIOS/p/4008564.html 在IOS开发过程中,为了保证数据的安全,我们通常要采取一些加密方法,常见的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前来说一般是不可逆的。我们在开发一款App过程中,对于发的请求,其中有个“sign”的字段,这个key对应的value是MD5加密的字段,旁边的安卓同事问php后台,说MD5加密是32位的还是16位的,由于以前未曾注意过,所以就搜索了下,现在稍微总结下: MD5 即Message-Digest Algorithm 5(信息-摘要 算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译 摘要算法 、 哈希算法 ),主流编程语言普遍已有MD5实现。MD5的作用是让大容量信息在用 数字签名 软件签署私人 密钥 前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的 十六进制 数字串)。(引用自百度百科) 注意生成“一定长”,这个“一定长”到底是多长呢!看了好多资料,包括维基百科和一些论坛,说MD5其实进过算法产生的是固定的128bit,即128个0和1的二进制位,而在实际应用开发中,通常是以16进制输出的,所以正好就是32位的16进制,说白了也就是32个16进制的数字。 ios

B1022 D进制的A+B

三世轮回 提交于 2020-02-10 18:41:27
输入两个非负 10 进制整数 A 和 B ( ≤),输出 A + B 的 D ( 1)进制数。 输入格式: 输入在一行中依次给出 3 个整数 A、 B 和 D。 输出格式: 输出 A + B 的 D 进制数。 输入样例: 123 456 8 输出样例: 1103 思路1: 用一个字符串str存储除d之后的余数,使用字符串的拼接,注意将余数转换成字符串格式;将字符串倒序输出。 思路2: 将余数存进动态数组,然后逆序输出。 1 #include <iostream> 2 #include <string> 3 #include <cctype> 4 using namespace std; 5 int main() { 6 long long a,b,c; 7 int d; 8 string e=""; 9 cin >> a >> b >> d; 10 c = a + b; 11 while (c != 0) { 12 e += to_string(c % d); 13 c = c / d; 14 } 15 if (e.size() == 0)cout << "0"; 16 else 17 for (int i = e.size() - 1; i >= 0; i--) { 18 cout << e[i]; 19 } 20 return 0; 21 } 来源: https://www

【日志】数字电路电子钟制作日志

微笑、不失礼 提交于 2020-02-09 03:12:41
文章目录 仿真部分: 1、秒脉冲发生电路 2、60进制脉冲可手动输入电路、24进制脉冲可手动输入电路、60进制可手动重置电路 3、数码管显示电路 4、发光二极管闪烁电路 5、电路总览 仿真部分: 仿真软件采用Proteus8.0,该软件相较于Multisim更适合于数字电路仿真。 基本思路: 使用32.768KHz晶振15分频产生1Hz脉冲,使用4060和D触发器完成15分频; 使用多片二、十进制加法计数器CD4518组合完成60进制、24进制计数器; 使用按键接入CD4511使得可以手动输入脉冲更改计数器状态; 使用七段显示译码器CD4511驱动共阴数码管显示时间; 使用4个红色LED两两排布于数码管之间,闪烁频率1Hz。 1、秒脉冲发生电路 仿真注意事项: 1、将4060的振荡器频率改为晶振频率。 2、使用计数计时器测频率功能需要修改参数 3、可以将电阻中模型类型改为数字提升仿真速率 2、60进制脉冲可手动输入电路、24进制脉冲可手动输入电路、60进制可手动重置电路 60进制实现: 由于CD4518为十进制加法计数器当计数满10时会置0,这时Q3的高电平被拉低 产生下降沿 ,可以使用CD4518自带的 下降沿计数模式(将CLK端口接地,E端口作为输入端口) 。 当秒十位 输出为0110 时即可向分个位进位且同时重置秒十位计数器采用与逻辑门实现。 PS:上升沿计数模式:E接高电平