• 黑马程序员——C语言开门片内存分析


     

    一、各种进制的总结

    1.二进制

    (1) 在c语言中二进制以0b开头,输出二进制格式没有固定的格式,自定义输出二进制格式的函数可以如下定义:
    #include <stdio.h>

    int main()
    {
        void  printfBinary(int);
        
        printfBinary(20);
        
        return 0;
    }

    void printfBinary(int n)
    {
        int bits = sizeof(int) * 8;  //计算出整型变量所占的字节数
        while (bits-->0) {
            
            //n的二进制形式向右移动bits个字节,然后同1进行按位与运算,保留原来的数值,进行打印。
            printf("%d", n>>bits&1);
            
                   if (bits%4 == 0) {
                printf(" ");
            }
        }
    }

    2. 八进制

    八进制以 0 开头, 使用 %o 输出整数,不带符号
     
    3. 十六进制

    十六进制以0x开头,使用 %x 输出整数

    4. 十进制

     
    c语言中除了上述三种格式的进制数外,普通的数据就是以十进制表示的。使用 %d 输出带符号整数, %u 输出不带符号整数


    二、互换两个变量值的方法

    1.借助中间变量值的方法进行互换

    假如两个变量的值分别为: int a = 5, b=6;  如果通过另一个变量来交换,具体的代码如下:

    void swap()
    {
        int a = 5, b=6;
        
        int c = a;  //现将a的值放入c中
        a = b;
        b= c;
    }

    2. 直接交换

    1. a = b - a;   //原来a变成两值之差  
    2. b = b - a;   //原来b的值变为a  
    3. a = b + a;   //原来a的值变为b  

    3. 根据位或运算进行交换,利用位或运算定律 即 a^b^a = b
    1. a = a ^ b;  
    2. b = a ^ b;  
    3. a = a ^ b;  

    4.交换两个数的做法,让我想起一个面试题,如下
     
    有两个杯子,分别为A = 5ml 和B = 3ml ,问怎么得到4ml 水, 水是无限的,但是不能使用另外的容器,此题想到有两个方法:

    (1) 先将盛满水的A倒入 B 中,然后再将B容器倒出,剩余的A = 2 再倒入B ,  盛满 A 再倒入 B,这时A =4ml;

       (2)    先将盛满的 B 倒入 A中 ,然后 再盛满B 倒入A中, B 这时为1ml ,倒出A,将B倒入A,然后 ,盛满B再倒入A 即可得 A=4ml;
     
     
     
     
     
  • 相关阅读:
    (六)键盘事件
    (五)鼠标事件
    (四)WebDriver常用方法
    等价类,边界值,判定图实例
    WCF入门(三)---WCF与Web服务/Web Service
    WCF入门(二)-----实战开发
    C#中用JavaScriptSerializer和Json.Net操作json格式的文件
    C#中SaveFileDialog 和OpenFileDialog 的用法
    C#操作.csv文件Demo
    Excel操作--使用NPOI导入导出Excel为DataTable
  • 原文地址:https://www.cnblogs.com/ITmgc/p/4423062.html
Copyright © 2020-2023  润新知