C-----------------LessonScale
来源:互联网 发布:从hive迁移到spark sql 编辑:程序博客网 时间:2024/06/06 23:56
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
/**
* 十进制: 10
二进制: 0b10
八进制: 010
十六进制: 0x10
*/
// 100 001 000 000 ----- 40
/*
int a = 0100;
printf("%0x\n",a);
*/
/**
* 如何输出进制数?
%d ----- 十进制
%0x ----- 十六进制
%o ----- 八进制
*/
/*
//一个字节等于8位二进制数.
//位运算符
//按位与 & 同为1则为1,否则为0,用于给某一位清零
int a = 4 & 6;
printf("a = %d\n", a);
//按位或 | 同为0则为0,否则为1,用于保留某一位的状态
a = 4 | 6;
printf("a = %d\n", a);
//按位异或 ^ 相同为0,不同为1,
a = 4 ^ 6;
printf("a = %d\n", a);
//按位非 ~
//如果是一个有符号的数,则最高位代表符号位,1代表负数,0代表正数.
//数据在内存中存储时是以补码的形式存储的,正数的补码是正数本身,负数的补码是绝对值取反+1.
//一个字节 就代表8位二进制数.
*/
/**
* 数据类型的取值范围:
无符号:
char 0 --- 2^8 -1
short 0 --- 2^16 - 1
int 0 --- 2^32 - 1
有符号:
char -(2^7) --- (2^7 - 1)
short -(2^15) --- (2^15 - 1)
int -(2^31) --- (2^31 - 1)
*/
/*
char b = ~4;
printf("b = %d\n", b);
*/
/*
unsigned char c = 255;
printf("c = %d\n", c);
unsigned char d = 255;
//左移 <<
printf("左移结果%d\n", d << 5);
//右移 >>
printf("右移结果%d\n", d >> 2);
//将100高四位与低四位互换.
// unsigned char number = 0b01100100;
// //1.先左移4位.
// unsigned char left = number << 4; //0100 0000
// //2.再右移4位.
// unsigned char right = number >> 4; //0000 0110
// //3.最后按位或.
// unsigned char result = left | right;
// printf("result = %d\n", result);
//将1001 0010 奇偶位互换
unsigned char number = 0b10010010;
//左移1位
unsigned char left = number << 1;
//右移1位
unsigned char right = number >> 1;
//清零左移后的奇数位
left = left & 0b10101010;
//清零右移后的偶数位
right = right & 0b01010101;
//按位或之后的结果
unsigned char result = left | right;
printf("result = %d\n", result);
*/
/*
//两个数交换,不使用第三个变量
int a = 10;
int b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a = %d, b = %d\n", a, b);
*/
//栈区内存的分配原则.
//从高到低分配,从低到高存储.
//地址:内存单元的编号.
/*
int a = 5;
printf("%p\n", &a);
int b = 10;
printf("%p\n", &b);
*/
//数组名代表数组的首地址,也就是数组中第一个元素的地址,是一个常量地址.
/*
int a[5] = {1, 2, 3, 4, 5};
printf("%p\n", a);
printf("%p\n", &a[0]);
printf("%p\n", &a[1]);
printf("%p\n", &a[2]);
printf("%p\n", &a[3]);
printf("%p\n", &a[4]);
*/
int a = -5;
printf("a = %d\n", a);
return 0;
}
******************************************************************************************************************************************************************************************************
#import <Foundation/Foundation.h>
#import "Scale.h"
int main(int argc, const char * argv[])
{
unsigned char number =0;
int a = 0;
int n = 0;
printf("inpt a number and shifting function:\n");
scanf("%d%d", &a, &n);
number = a;
int resultLeft = LeftLoop(number, n);
printf("resultLeft = %d\n", resultLeft);
int resultRight = RightLoop(number, n);
printf("resultRight = %d\n", resultRight);
return 0;
}
#import <Foundation/Foundation.h>
// 3.输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)。
// 提示:系统自带的移位都是非循环的。
// 左移
int LeftLoop(unsignedchar number, int n);
// 右移
int RightLoop(unsignedchar number, int n);
*************************************************************************************************************
#import "Scale.h"
// 3.输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)。
// 提示:系统自带的移位都是非循环的。
int LeftLoop(unsignedchar number, int n)
{
n = n % 8;
unsigned char left = number << n;
unsigned char right = number >> (8 - n);
unsigned char result = left | right;
return result;
}
// 右移
int RightLoop(unsignedchar number, int n)
{
n = n % 8;
unsigned char right = number >> n;
unsigned char left = number << (8 - n);
unsigned char result = left | right;
return result;
}
- C-----------------LessonScale
- c
- c
- c
- c
- C
- c
- c
- c
- C+
- c
- C
- c
- c
- c
- C
- C
- c
- Spring在SSH中的作用
- nyoj-76 超级台阶
- DECAF PLATFORM 编译安装小结
- hihocoder 1079 离散化(线段树+区间离散化)
- POJ 2976 Dropping tests 01分数规划 入门
- C-----------------LessonScale
- man命令使用
- 我的博客Hello World
- java开发中常用插件二jcrop---jQuery 图像裁剪插件
- 用单词计数的代码演示Mapre获取命令行参数
- Netty之Google Protobuf编解码
- hibernate的原生 sql查询
- unity学习之Transform
- 几个常用的适配属性和写代码要注意的方法