码迷,mamicode.com
首页 > 移动开发 > 详细

ios进制

时间:2015-07-24 10:39:25      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

//
//  main.m
//  LesssonScale
////  Copyright (c) 2015年 池海涛. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
 
      以10为例,不同进制的表示方法
     十进制: 10
     二进制:0b10;
     八进制:010
     十六进制:1x10;
     int  a = 0b100;
     printf("%0x\n",a);
 
      如何输出进制数:
     %d ------十进制
     %o  ------八进制
     %0x  ------十六进制
 
      位运算符 :按位 &,按位或 |,按位非 ~,按位异或 ^,左移<<,右移>>
     按位与 & :同1为1,否则为0,经常用于对某一位清零
     
     int a = 5 & 7;
     5--0101
     7--0111
       =0101=5
     printf("a = %d\n", a);
     
     按位或 | : 同0为0,否则为1.经常用于保留某一位.
     int a = 5 | 7;  
     5--0101
     7--0111
       =0111
     printf("a = %d\n", a);
     
     按位异或 ^相同为0,不同为1.
     int a = 5 ^ 7; 
     5--0101
     7--011100102
     printf("a = %d\n", a);
     
     按位非 ~;
     char b = ~4;   //4--0000 0100, ~4=1111 1011 -1 ->1111 1010 ->1000 0101 =-5
     printf("b = %d\n", b);
     
     如果是一个有符号位的数,这最高位代表符号位,1 代表 负数, 0 代表正数
     
     数据在内存中存储时,是以补码的形式存储的,正数的补码是正数的本身,负数的补码是
     绝对值 取反 加1.
     
     数据类型的取值范围:
    根据char的取值范围和unsigned char的取值范围的位数,如char和unsigned char都是8位,char型最高位是符号位,1代表为负数,所以为-2^7-1~~+2^7-1  即-128~+1    27  ,而unsigned char为2^8-1=256
即0~255
无符号: char 0-----255 (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 左移 << unsigned char d = 1; printf("左移后的结果%d\n", d << 4 ); 右移 >> unsigned char e = 255; printf("右移后的结果%d\n", e >> 1); //将100 高四位,低四位互换  unsigned char number = 0b01100100; //1.先将 number 左移 4位 unsigned char left = number << 4; //2.再将 number 右移 4位 unsigned char right = number >> 4; //3.按位或  unsigned char result = left | right; printf("result = %d\n", result); 将 10010010 奇偶位互换 unsigned char num = 0b10010010; //清零操作使用 按位&, 保留的数位为1 ,清0 数的位为 0 //1.将奇数位变成偶数位,左移一位  unsigned char life = num << 1; //2.保留偶数位, 奇数位清0  unsigned char clearJI = life & 0b10101010; //3.将偶数位变奇数位, 右移1位  unsigned char rightNew = num >> 1; //4.保留奇数位,偶数位清0  unsigned char clearOU = rightNew & 0b01010101; //5.按位或 |  unsigned char resultNew = clearJI | clearOU; printf("resultNew = %d \n", resultNew); 栈区内存分配原则:由高到底分配,有低到高存取. int a = 10; printf("%p\n",&a); int b = 10; printf("%p\n",&b); //数组名代表数组的首地址,也就是数组的第一个元素的地址,是一个常量地址 int a[4] = {9, 5, 2, 7}; printf("%p\n",&a[0]); printf("%p\n",&a[1]); printf("%p\n",&a[2]); printf("%p\n",&a[3]); printf("%p\n",a); a=1010 b=1100 a=0110 b=1010 //交换两个变量 int a=10,b=12; //a=1010^b=1100; a=a^b; //a=0110 //找到a和b中不相同的位 b=a^b; //b=1010 //原b和ab不相同异或 -> a =1010 a=a^b; //a=1100 //  printf("a = %d\nb = %d", a, b); return 0; }

 

ios进制

标签:

原文地址:http://www.cnblogs.com/wohaoxue/p/4672599.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!