代码例题(1-3)(含进阶版)及讲解:1.求两个数二进制中不同位的个数 2.打印整数的二进制的奇数和偶数位 3.交换两个变量,不创建临时变量 (ps最后一道为已知代码求值题)

简介: 代码例题(1-3)(含进阶版)及讲解:1.求两个数二进制中不同位的个数 2.打印整数的二进制的奇数和偶数位 3.交换两个变量,不创建临时变量 (ps最后一道为已知代码求值题)
#define _CRT_SECURE_NO_WARNINGS 1 
//求两个数二进制中不同位的个数
//要求:实现两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
//例子:输入:1999 2299            输出:7
// 
//普通·版
//#include<stdio.h>
//int main()
//{
//    int m = 22;//初始值即为输入值,可更改
//    int n = 33;
//    int i = 0;
//    int count = 0;
//    for (i = 0; i < 32; i++)
//    {
//        if (((n >> i) & 1 )!= ((m >> i) & 1))
//        {
//            count++;
//        }
//    }
//    printf("%d\n", count);//打印结果为5
//    return 0;
//}
//进阶版
//m^n(异或),相同为0.相异为1
//#include<stdio.h>
//int retu(int n)
//{
//    int count = 0;
//    int i = 0;
//    while (n)
//    {
//        n = n & (n - 1);
//            count++;
//    }
//    return count++;
//}
//int main()
//{
//    int m = 22;
//    int n = 33;
//    int count = 0;
//    int i = 0;
//    scanf("%d %d", &m, &n);
//    int ret = m ^ n;//相同为0,相异为1
//    count=retu(ret);
//    printf("%d\n", count);
//    return 0;
//}
//打印整数的二进制的奇数和偶数位(获取一个整数二进制序列中所有的偶数位和奇数位,分别打印二进制序列)
//#include<stdio.h>
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);//scanf("%d",&n),,,,,不能加\n
//    int i = 0;
//    //打印所有偶数位
//    for (i = 31; i >= 1; i -= 2)//for循环,使每个符合条件的位(偶数位)打印
//    {
//            printf("%d ", (n >> i) & 1 );//(n>>i)表示把最高位移动到最低位,然后与1按位与,打印结果
//    }
//    printf("\n");
//    //打印所有奇数位
//    for (i = 30; i >= 0; i -= 2)
//    {
//        printf("%d ", (n >> i) & 1);//(n>>i)表示把最高位移动到最低位,然后与1按位与,打印结果
//    }
//    return 0;
//}
//交换两个变量,不创建临时变量
//思路:a^b^b=a; (放在a里,就交换a,b)       a^b^a=b;(放在a里,就交换a,b)
//#include<stdio.h>
//int main()
//{
//    int a = 0;
//    int b = 0;
//    scanf("%d %d", &a, &b);
//    a = a ^ b;//a放置的是a^b
//    b = a ^ b;//b=a^b=a^b^b=a,,,,b变成原来的a
//    a = a ^ b;//a=a^b^a=b,,,,a变为原来的b
//    printf("%d %d ", a, b);
//    return 0;
//}
//表达式求值先看是否存在整形提升或算术运算,再进行计算
//表达式真正计算时,先看相邻操作符的优先级决定先算谁
//相邻操作符的优先级相同的情况下,看操作符的结合性决定计算顺序
//即使有优先级和结合性,表达式的值依然可能不唯一//如int ret=(++i)+(++i)+(++i);计算顺序可能是++i ++i ++i 4+4 8+4 也可能是++i ++i 3+3 ++i 6+4
// 
//指针是变量,用来存放地址,指针变量中存的有效地址可以唯一指向内存中的一块区域
// 局部变量不初始化就是野指针,野指针不能被正常使用
//以下系统中,int类型占几个字节,指针占几个字节,操作系统可以使用的最大内存空间是多大
//32位下:4        4            2^32(每个字节有0,1....共32个字节)                       64位下:4         8           2^64
//例题,求下面代码的值
#include<stdio.h>
int main()
{
    int arr[] = { 1,2,3,4,5 };//short型访问两个字节
    short* p = (short*)arr;//把数组给了short型的指针,并把short型指针交给p
    int i = 0;
    for (i = 0; i < 4; i++)
    {
        *(p + i) = 0;//p是short型指针,p+0不跳过字节,是从01 00的0开始,p+1跳过2个字节
    }
    //10进制:1                二进制:00000000000000000000000000000001    十六进制00 00 00 01
//把十六进制1-5各个数存在内存中(vs内是倒着存)小端存储为
//01 00 00 00(四个字节)02 00 00 0(四个字节)03 00 00 00(四个字节)04 00 00 00(四个字节) 05 00 00 00(四个字节)
//第一次for循环,p+0不跳过字节,是从01 00的0开始,更改对象01 00,变为00 00(此时i++=1)
//第二次for循环,p+1跳过二字节,是从00 00的0开始,更改对象00 00,变为00 00(此时i++=2)
//第三次for循环,p+2跳过四字节,是从02 00的0开始,更改对象02 00,变为00 00(此时i++=3)
//第四次for循环,p+3跳过六字节,是从00 00的0开始,更改对象00 00,变为00 00(此时i++=4,跳出循环)
//一次改两个字节,改了4次,八个字节,两个整形,把1和2的空间全部改为0
    for (i = 0; i < 5; i++)
    {
        printf("%d ", arr[i]);//以数组类型访问并打印,(4个字节)
    }//打印结果为0 0 3 4 5
//第二次for循环只是为了打印修改后的值
    return 0;
}
相关文章
|
程序员 计算机视觉 Python
一行代码搞定的事还用个锤子的 PS 啊
在我们的日常生活和工作中有不少场景需要简单处下理图片,很多人都是依赖 PS、美图秀秀等各种图像处理工具,殊不知在你打开软件的一瞬间 Python 就已经将图片处理完了。听起来是不是很神奇,正所谓是 Python 在手,啥也不愁。
163 0
一行代码搞定的事还用个锤子的 PS 啊
|
程序员 计算机视觉 Python
一行代码搞定的事还用个锤子的 PS 啊
在我们的日常生活和工作中有不少场景需要简单处下理图片,很多人都是依赖 PS、美图秀秀等各种图像处理工具,殊不知在你打开软件的一瞬间 Python 就已经将图片处理完了。听起来是不是很神奇,正所谓是 Python 在手,啥也不愁。 Python 届处理图片最强的库是 PIL(Python Image Library),但由于该库只支持 2.x 版本,于是有一批乐于助人的程序员在此基础上做了扩展,出了一个兼容 3.x 的版本也就是 Pillow,因此,我们今天要用的库就是 Pillow。
191 0
一行代码搞定的事还用个锤子的 PS 啊
|
前端开发 安全 Unix
破解索尼PS4系列:用户代码执行(二)
本文讲的是破解索尼PS4系列:用户代码执行(二),本文会重点讲解如何在WebKit进程中进行代码执行。
1968 0
|
C++
关于对H264码流的PS的封装的相关代码实现
1、写在开始之前:            最近因为新工作要维护别人留下的GB模块代码,先熟悉了流程,然后也试着封装了下ps流,结果也能通过测试正常预览了,当然,其中开发读文档的头疼,预览花屏,卡帧的事情都有遇到,当时慢慢的看文档,整理逻辑,也就都顺利解决了,下面把大致的一些流程代码贴出来分享下。
2377 0
|
Web App开发 前端开发 Unix
索尼PS4破解之用户层代码执行(Part2)
原文:Hacking the PS4, part 2 译者:鸢尾 来源:索尼PS4破解之用户层代码执行 自从我之前写的那篇有关PS4安全发布一来,我又有了一些新的发现。
1219 0
|
6月前
|
Linux
百度搜索:蓝易云【Linux系统ps命令:查看正在运行的进程】
通过这些简洁的ps命令用法,你可以方便地查看Linux系统中正在运行的进程信息。
86 1
|
6月前
|
安全 Linux 应用服务中间件
linux(三十一)系统信息命令ps查看系统进程
linux(三十一)系统信息命令ps查看系统进程
218 1
|
6月前
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
113 0
|
5月前
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
124 13
|
2月前
|
调度
crash命令 —— ps
crash命令 —— ps