目录
4个二进制位组合才能有16个状态
编码就是解决这个东西到底用哪个二进制表示
不够位数指的是比如32位,前面都补1
- #include
- #include
- #include
- #include
- using namespace std;
-
- int main()
- {
- char ch = 0x80;
- printf("%d\n", ch);
- ch = 128; // 128是2的7次方,// 128是整型,占四个字节 00000000 00000000 00000000 10000000
- //char占一个字节,把四个字节赋给一个字节前面被截掉,就把1000 0000放进去了
- // 1000 0000 但是我们知道1000 0000 首位为1代表负数,
- // 负数二进制如何转为10进制
- // 0111 1111
- // + 1
- // 1000 0000
- // 128, 所以1000 0000是-128
- //所以1000 0000 前面需要补0 才能表示它是正数
- printf("%d\n", ch); // 输出 -128
- //所以输出-128
-
- ch = 129; // 00000000 00000000 00000000 1000 0001
- //char占一个字节,把四个字节赋给一个字节前面被截掉,就把1000 0001放进去了
- // 0111 1111 ->127
- // 所以结果是 -127
- printf("%d\n", ch);
- system("pause");
- return 0;
- }
- #include
- #include
- #include
- // 定义链表结点的数据类型
- struct Node
- {
- int data; // 数据域
- struct Node* pNext; // 指针域
- };
-
- //创建链表,并返回头节点的地址
- //静态的建函数运行完就没了
- struct Node* CreateList()
- {
- int len; // 用来存放有效结点的个数
- int val; // 用来临时存放用户输入的结点的值
-
- // 分配了一个不存放有效数据的头结点
- struct Node* pHead = (struct Node*)malloc(sizeof(struct Node));
- if (pHead == NULL) {
- printf("分配失败,程序终止\n");
- exit(-1); // 终止程序
- }
- struct Node* pTail = pHead;
- pTail->pNext = NULL;
- printf("请输入需要生成的链表节点的个数: len = \n");
- scanf_s("%d",&len);
- for (int i = 0; i < len; i++) {
- printf("请输入第%d各节点的值:", i + 1);
- scanf_s("%d", &val);
-
- struct Node* pNew= (struct Node*)malloc(sizeof(struct Node));
- if (pNew == NULL) {
- printf("分配失败,程序终止\n");
- exit(-1);//终止
- }
- pNew->data = val;
- pNew->pNext = NULL;
- pTail->pNext = pNew;
- pTail = pNew;
- }
- return pHead;
- }
-
- void TraverseList(struct Node* pHead)
- {
- struct Node* p = pHead->pNext;
- while (p!=NULL) {
- printf("%d ", p->data);
- p = p->pNext;
- }
- return;
- }
- int main(void)
- {
- struct Node* pHead = NULL; //pHead用来存放链表头节点的地址
- pHead = CreateList();
- TraverseList(pHead);
-
- system("pause");
- return 0;
- }
如果想知道某一位是几,比如想知道第一位和第三位是几,可以与0101与,那么如果1和3位结果是1 就说1和3位原来是1,如果1和3位结果是0 就说1和3位原来是0
可以接受任意类型的指针
不能解引用
不能+-整数