06-进制、位运算、数组和字符串

一、进制

1. 什么是进制

* 是一种计数的方式,数值的表示形式

2. 二进制

* 特点:只有0和1,逢2进1

* 书写格式:0B或者0b开头

* 使用场合:二进制指令\二进制文件,变量在内存中就是二进制存储

3. 八进制

* 特点:0~7,逢8进1

* 书写格式:0开头

4. 十六进制

* 特点:0~F,逢16进1

* 书写格式:0x或者0X开头

二、位运算

1. & 按位于

1> 功能

只有对应的两个二进位均为1时,结果位才为1,否则为0.

2> 规律

二进制中,与1相&就保持原位,与0相&就为0

2. | 按位或

1> 功能

只要对应的两个二进位有1个为1时,结果就为1,否则为0.

 3. ^ 按位异或

1> 功能

当对应的二进位相异(不相同)时,结果为1,否则为0

2> 规律

* 相同整数相^的结果是0。比如5^5=0

* 多个整数相^的结果跟顺序无关。比如5^6^7=5^7^6

* 因此得出结论:a^b^a = b

4. ~取反

对整数a的各二进位进行取反,符号位也取反(0变1,1变0)

5. <<左移

把整数a的各二进位全部左移n位,高位丢弃,低位补0.

6. >>右移

把整数a的各二进位全部右移n位,保持符号位不变。

三、数组

1. 数组的特点

* 只能存放一种类型的数据,比如int类型的数组,float类型的数组

* 里面存放的数据称为“元素”

2. 格式

元素类型 数组名[元素个数];

比如:

int ages[3];

3. 初始化

int a[3] = {1,2,3};
int a[] = {1,5,23};
int a[5] = {[2]=6,12,62}; // 表示从下标为2开始初始化,如果超出下标的话,会有警告,运行时不会报错
int a[]; // error

四、字符串

1. 字符串的初始化

* “123”其实是由‘1’,‘2’,‘3’,‘\0’组成

2. 常用字符串处理函数

strlen()

时间: 2024-10-26 19:01:15

06-进制、位运算、数组和字符串的相关文章

【学习ios之路:C语言】进制.位运算.栈

1.进制转换 1).10进制转为N进制.方法:(连除倒取余). 2).N进制转换为10进制.方法:(按权求和法):当前位上的数乘以基数的位数减1次方. 例: 0b1111 ---- 1* 2^3 + 1*2^2 +1 * 2^1 +1*2^0 = 15; 038 ----- 3*16^1 +8*16^0 = 56; 3).N进制转换N进制. 例如: 二进制 --- 16进制 1010   0011  ----  A 3 1111   0011  ----  F 3 int a = 010;//8

c语言2进制 位运算 应用

/*写函数: unsigned int  reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值. 如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回:           2550136832*/ #include<stdio.h> unsigned

洛谷P1013 进制位

P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E KL KK E E KL KK KV 其含义为: L+L=L,L+K=K,L+V=V,L+E=E K+L=K,K+K=V,K+V=E,K+E=KL …… E+E=KV 根据这些规则可推导出:L=0,K=1,V=2,E=3 同时可以确定该表表示的是4进制加法 //感谢lxylxy123456同学为本

(二维数组 亿进制 或 滚动数组) Hat&#39;s Fibonacci hdu1250

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12284    Accepted Submission(s): 4124 Problem Description A Fibonacci sequence is calculated by adding the previous two members t

Android---16进制与字节数组

16进制字符串与字节数组进行转换 package string; import java.util.Arrays; /** * byte[]与16进制字符串相互转换 * * @date:2017年4月10日 下午11:04:27 */ public class BytesHexStrTranslate { private static final char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', '

IT十八掌作业_java基础第四天_复习运算符、进制转化和数组

1.将按位运算操作,尤其是左移和右移(有无符号)整理到自己的博客中. 重点说明清晰负数的运算过程. 2.byte数到十六进制字符串表现形式程序设计原理和实现方式整理到博客中. 3.定义函数,计算一位整型数组所有元素的和. 4.数组的拷贝. 5.堆内存默认是1/4, ---------------------------------------- java -Xmx//设置堆内存最大值 -Xms//设置堆内存初始值 className//类名 ---------------------- 1,答:

16进制串hex与ASCII字符串相互转换

提供两个函数,方便十六进制串与ASCII 字符串之间的相互转换,使用函数需要注意的是返回的串是在堆上通过 calloc 分配的,所以,记得使用完返回值释放该块,并且将指向该块的指针 =NULL . char *chstohex ( char* chs ) { char hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8','9', 'A', 'B', 'C', 'D', 'E', 'F' }; int len = strlen ( chs

二进制到十六进制转换法加各种进制的运算

十进制      0    1    2    3        4        5        6        7        8        9    10    11       12    13    14    15 十六进制   0    1    2    3        4        5        6        7        8        9     a     b        c     d      e     f 二进制      0   

noip 1998 洛谷P1013 进制位

题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E KL KK KV 其含义为: L+L=L,L+K=K,L+V=V,L+E=E K+L=K,K+K=V,K+V=E,K+E=KL …… E+E=KV 根据这些规则可推导出:L=0,K=1,V=2,E=3 同时可以确定该表表示的是4进制加法 //感谢lxylxy123456同学为本题新加一组数据 输入输出

ACM--26进制加法--HDOJ 2100--Lovekey--大数--字符串处理

HDOJ题目地址:传送门 Lovekey Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7783    Accepted Submission(s): 2519 Problem Description XYZ-26进制数是一个每位都是大写字母的数字. A.B.C.-.X.Y.Z 分别依次代表一个0 ~ 25 的数字,一个 n 位的26